{"version":3,"file":"index.cjs","names":["version","major","wrappedConfig: NextConfig","externalsMapping: Record<string, string>","typeofJsonValue","isJsonObject","UnknownFieldHandler","TWO_PWR_32_DBL","goog_varint_1","PbLong","binary_format_contract_1","pb_long_1","goog_varint_1","defaultsRead","pb_long_1","assert_1","defaultsWrite","lower_camel_case_1","reflection_info_1","oneof_1","reflection_info_1","json_typings_1","base64_1","reflection_info_1","pb_long_1","assert_1","reflection_long_convert_1","base64_1","pb_long_1","reflection_info_1","assert_1","jsonValue","reflection_info_1","reflection_long_convert_1","pb_long_1","binary_format_contract_1","reflection_info_1","reflection_scalar_default_1","binary_format_contract_1","reflection_info_1","assert_1","pb_long_1","reflection_scalar_default_1","message_type_contract_1","reflectionMergePartial","T","reflection_info_1","message_type_contract_1","reflection_info_1","reflection_type_check_1","reflection_json_reader_1","reflection_json_writer_1","reflection_binary_reader_1","reflection_binary_writer_1","reflection_create_1","reflection_merge_partial_1","json_typings_1","json_format_contract_1","reflection_equals_1","binary_writer_1","binary_reader_1","MessageType","copy","message_type_contract_1","num","reflection_info_1","MessageType","UnknownFieldHandler","WireType","__createBinding","__exportStar","exports","exports","version_1","platform_1","version_1","api","global_utils_1","logger","types_1","logger","types_1","global_utils_1","API_NAME","logger","diag_1","createContextKey","context","context_1","global_utils_1","diag_1","API_NAME","context","trace_flags_1","invalid_span_constants_1","context_1","NonRecordingSpan_1","context","invalid_span_constants_1","NonRecordingSpan_1","context_1","context_utils_1","spancontext_utils_1","context","version","context","ProxyTracer_1","version","VALID_KEY_CHAR_RANGE","VALID_KEY","VALID_VENDOR_KEY","VALID_KEY_REGEX","VALID_VALUE_BASE_REGEX","INVALID_VALUE_COMMA_EQUAL_REGEX","validateKey","validateValue","MAX_TRACE_STATE_ITEMS","MAX_TRACE_STATE_LEN","LIST_MEMBERS_SEPARATOR","LIST_MEMBER_KEY_VALUE_SPLITTER","context_1","diag_1","NoopMeter_1","global_utils_1","diag_1","API_NAME","version","context","context_1","context","global_utils_1","TextMapPropagator_1","utils_1","diag_1","API_NAME","context","ProxyTracerProvider_1","spancontext_utils_1","version","utils_1","types_1","MessageType","PbLong","UnknownFieldHandler","WireType","MessageType","PbLong","UnknownFieldHandler","WireType","MessageType","UnknownFieldHandler","WireType","SpanKind$1","MessageType","UnknownFieldHandler","WireType","OtSpanKind","PbSpanKind","fields: Record<string, Value>","yaml","globalLogger: Logger","version","module","exports","hookFn: HookFn","HookRequire","HookImport","expiredTraces: string[]","context","trace","SpanKind","spanInfo: SpanInfo | null","attributes: Attributes","normalized: Record<string, any>","buffers: Buffer[]","CONTENT_TYPE_MAPPING: Record<string, DecodedType>","EventEmitter","merged: JsonSchema","schema: JsonSchema","sortedObj: any","ClientRequest: any","EventEmitter","IncomingMessage","events","emptyResponse: HttpClientOutputValue","rawInputValue: HttpClientInputValue","SpanKind","callback: ((res: any) => void) | undefined","SpanKind","runtime_1","reflection_info_1","ServiceType","runtime_1","Deferred","deferred_1","runtime_1","__awaiter","__awaiter","__awaiter","__awaiter","rpc_error_1","runtime_1","rpc_output_stream_1","rpc_options_1","unary_call_1","server_streaming_call_1","client_streaming_call_1","duplex_streaming_call_1","runtime_1","stackIntercept","MessageType","UnknownFieldHandler","WireType","ServiceType","isWrapped","testSpan: HttpSpanData","SpanKind","actions: TransformAction[]","checks: MatcherFunction[]","path","jp","context","SpanKind","completeInputValue: any","responseChunks: (string | Buffer)[]","outputValue: HttpServerOutputValue","spanData: HttpSpanData","SpanStatusCode","error","requestBodyChunks: Buffer[]","streamConsumptionMode: \"NOT_CONSUMING\" | \"READ\" | \"PIPE\"","updatedInputValue: HttpServerInputValue","requestBodyChunks: (string | Buffer)[]","chunk","updatedInputValue: HttpClientInputValue","outputValue: HttpClientOutputValue","responseChunks: Buffer[]","errorOutputValue: HttpClientOutputValue","headers: Record<string, string>","requestOptions: RequestOptions","inputValue: HttpClientInputValue","currentSpanInfo: SpanInfo | null","SpanKind","context","currentSpanInfo: SpanInfo | null","EventEmitter","queryConfig: QueryConfig | null","inputValue: PgClientInputValue","SpanKind","config: QueryConfig","SpanStatusCode","error","context","fieldTypeMap: Record<string, number>","error: any","SpanKind","SpanStatusCode","inputValue: PostgresClientInputValue","error","outputValue: PostgresOutputValueType","EventEmitter","EventEmitter","storedRows: any","storedFields: any","SpanKind","SpanKind","isWrapped","queryConfig: Mysql2QueryConfig | null","inputValue: Mysql2InputValue","SpanKind","SpanStatusCode","error","context","config: Mysql2QueryConfig","streamResults: any[]","streamFields: any","outputValue: any","SpanKind","verifyConfig: VerifyQueryConfig | null","rawInputValue: JwtVerifyInputValue","inputValue: JwtVerifyInputValue","SpanKind","signConfig: SignQueryConfig | null","inputValue: JwtSignInputValue","config: VerifyQueryConfig","config: SignQueryConfig","SpanStatusCode","error","context","error: any","actions: TransformAction[]","checks: MatcherFunction[]","SpanKind","jp","encodedBody: any","inputValue: FetchInputValue","SpanKind","spanData: FetchSpanData","SpanStatusCode","error","result: Record<string, string>","bodyBuffer: Buffer","chunks: Uint8Array[]","isUtf8","SUPPORTED_VERSIONS","isWrapped","sanitizedArgs: any[]","argsMetadata: BufferMetadata[]","inputValue: IORedisInputValue","SpanKind","inputValue: IORedisConnectInputValue","SpanStatusCode","values: any[]","metadata: BufferMetadata[]","newModuleExports: UpstashRedisModuleExports","inputValue: UpstashRedisInputValue","SpanKind","outputValue: UpstashRedisOutputValue","SpanStatusCode","error","readableMetadata: ReadableMetadata","readableBuffer: ReadableMetadataValue","path","bufferMap: Record<string, { value: string; encoding: string }>","jsonableStringMap: Record<string, string>","cloned: any","version","parsedParams: {\n          method: string;\n          serialize: Function;\n          deserialize: Function;\n          argument: any;\n          metadata: any;\n          options: any;\n          callback: Function;\n        }","path","method: string","service: string","readableBody: any","bufferMap: Record<\n          string,\n          {\n            value: string;\n            encoding: string;\n          }\n        >","jsonableStringMap: Record<string, string>","readableMetadata: ReadableMetadata","inputValue: GrpcClientInputValue","SpanKind","parsedParams: {\n          method: string;\n          serialize: Function;\n          deserialize: Function;\n          argument: any;\n          metadata: any;\n          options: any;\n        }","stream","Readable","metadata: any","options: any","readableResponseBody: any","responseBufferMap: Record<string, { value: string; encoding: string }>","responseJsonableStringMap: Record<string, any>","status: {\n      code: number;\n      details: string;\n      metadata: Record<string, any>;\n    }","responseMetadataInitial: any","serviceError: any","SpanStatusCode","context","EventEmitter","mockResult: GrpcOutputValue | GrpcErrorOutput","status: any","streamResponses: any[]","inputValue: FirestoreInputValue","SpanKind","context","documentResult: FirestoreDocumentResult","SpanStatusCode","result: FirestoreWriteResult","queryResult: FirestoreQueryResult","inputValue: NextjsServerInputValue","context","SpanKind","completeInputValue: NextjsServerInputValue","capturedStatusCode: number | undefined","capturedStatusMessage: string | undefined","capturedHeaders: Record<string, string>","responseChunks: (string | Buffer)[]","SpanStatusCode","outputValue: NextjsServerOutputValue","requestBodyChunks: Buffer[]","streamConsumptionMode: \"NOT_CONSUMING\" | \"READ\" | \"PIPE\"","updatedInputValue: NextjsServerInputValue","normalized: Record<string, string>","inputValue: PrismaInputValue","SpanKind","outputValue: PrismaOutputValue","SpanStatusCode","error: any","errorWithClassName: PrismaErrorWithClassName","cloned: PrismaErrorWithClassName","context","api_1","constants_1","api_1","suppress_tracing_1","constants_1","utils_1","context","api_1","api_1","api_1","sampling_1","environment_1","hex_to_binary_1","SPAN_ID_BYTES","TRACE_ID_BYTES","RandomIdGenerator","getIdGenerator","SHARED_BUFFER","createConstMap","TMP_AWS_LAMBDA_INVOKED_ARN","TMP_DB_SYSTEM","TMP_DB_CONNECTION_STRING","TMP_DB_USER","TMP_DB_JDBC_DRIVER_CLASSNAME","TMP_DB_NAME","TMP_DB_STATEMENT","TMP_DB_OPERATION","TMP_DB_MSSQL_INSTANCE_NAME","TMP_DB_CASSANDRA_KEYSPACE","TMP_DB_CASSANDRA_PAGE_SIZE","TMP_DB_CASSANDRA_CONSISTENCY_LEVEL","TMP_DB_CASSANDRA_TABLE","TMP_DB_CASSANDRA_IDEMPOTENCE","TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT","TMP_DB_CASSANDRA_COORDINATOR_ID","TMP_DB_CASSANDRA_COORDINATOR_DC","TMP_DB_HBASE_NAMESPACE","TMP_DB_REDIS_DATABASE_INDEX","TMP_DB_MONGODB_COLLECTION","TMP_DB_SQL_TABLE","TMP_EXCEPTION_TYPE","TMP_EXCEPTION_MESSAGE","TMP_EXCEPTION_STACKTRACE","TMP_EXCEPTION_ESCAPED","TMP_FAAS_TRIGGER","TMP_FAAS_EXECUTION","TMP_FAAS_DOCUMENT_COLLECTION","TMP_FAAS_DOCUMENT_OPERATION","TMP_FAAS_DOCUMENT_TIME","TMP_FAAS_DOCUMENT_NAME","TMP_FAAS_TIME","TMP_FAAS_CRON","TMP_FAAS_COLDSTART","TMP_FAAS_INVOKED_NAME","TMP_FAAS_INVOKED_PROVIDER","TMP_FAAS_INVOKED_REGION","TMP_NET_TRANSPORT","TMP_NET_PEER_IP","TMP_NET_PEER_PORT","TMP_NET_PEER_NAME","TMP_NET_HOST_IP","TMP_NET_HOST_PORT","TMP_NET_HOST_NAME","TMP_NET_HOST_CONNECTION_TYPE","TMP_NET_HOST_CONNECTION_SUBTYPE","TMP_NET_HOST_CARRIER_NAME","TMP_NET_HOST_CARRIER_MCC","TMP_NET_HOST_CARRIER_MNC","TMP_NET_HOST_CARRIER_ICC","TMP_PEER_SERVICE","TMP_ENDUSER_ID","TMP_ENDUSER_ROLE","TMP_ENDUSER_SCOPE","TMP_THREAD_ID","TMP_THREAD_NAME","TMP_CODE_FUNCTION","TMP_CODE_NAMESPACE","TMP_CODE_FILEPATH","TMP_CODE_LINENO","TMP_HTTP_METHOD","TMP_HTTP_URL","TMP_HTTP_TARGET","TMP_HTTP_HOST","TMP_HTTP_SCHEME","TMP_HTTP_STATUS_CODE","TMP_HTTP_FLAVOR","TMP_HTTP_USER_AGENT","TMP_HTTP_REQUEST_CONTENT_LENGTH","TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED","TMP_HTTP_RESPONSE_CONTENT_LENGTH","TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED","TMP_HTTP_SERVER_NAME","TMP_HTTP_ROUTE","TMP_HTTP_CLIENT_IP","TMP_AWS_DYNAMODB_TABLE_NAMES","TMP_AWS_DYNAMODB_CONSUMED_CAPACITY","TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS","TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY","TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY","TMP_AWS_DYNAMODB_CONSISTENT_READ","TMP_AWS_DYNAMODB_PROJECTION","TMP_AWS_DYNAMODB_LIMIT","TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET","TMP_AWS_DYNAMODB_INDEX_NAME","TMP_AWS_DYNAMODB_SELECT","TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES","TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES","TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE","TMP_AWS_DYNAMODB_TABLE_COUNT","TMP_AWS_DYNAMODB_SCAN_FORWARD","TMP_AWS_DYNAMODB_SEGMENT","TMP_AWS_DYNAMODB_TOTAL_SEGMENTS","TMP_AWS_DYNAMODB_COUNT","TMP_AWS_DYNAMODB_SCANNED_COUNT","TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS","TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES","TMP_MESSAGING_SYSTEM","TMP_MESSAGING_DESTINATION","TMP_MESSAGING_DESTINATION_KIND","TMP_MESSAGING_TEMP_DESTINATION","TMP_MESSAGING_PROTOCOL","TMP_MESSAGING_PROTOCOL_VERSION","TMP_MESSAGING_URL","TMP_MESSAGING_MESSAGE_ID","TMP_MESSAGING_CONVERSATION_ID","TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES","TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES","TMP_MESSAGING_OPERATION","TMP_MESSAGING_CONSUMER_ID","TMP_MESSAGING_RABBITMQ_ROUTING_KEY","TMP_MESSAGING_KAFKA_MESSAGE_KEY","TMP_MESSAGING_KAFKA_CONSUMER_GROUP","TMP_MESSAGING_KAFKA_CLIENT_ID","TMP_MESSAGING_KAFKA_PARTITION","TMP_MESSAGING_KAFKA_TOMBSTONE","TMP_RPC_SYSTEM","TMP_RPC_SERVICE","TMP_RPC_METHOD","TMP_RPC_GRPC_STATUS_CODE","TMP_RPC_JSONRPC_VERSION","TMP_RPC_JSONRPC_REQUEST_ID","TMP_RPC_JSONRPC_ERROR_CODE","TMP_RPC_JSONRPC_ERROR_MESSAGE","TMP_MESSAGE_TYPE","TMP_MESSAGE_ID","TMP_MESSAGE_COMPRESSED_SIZE","TMP_MESSAGE_UNCOMPRESSED_SIZE","SEMATTRS_AWS_LAMBDA_INVOKED_ARN","SEMATTRS_DB_SYSTEM","SEMATTRS_DB_CONNECTION_STRING","SEMATTRS_DB_USER","SEMATTRS_DB_JDBC_DRIVER_CLASSNAME","SEMATTRS_DB_NAME","SEMATTRS_DB_STATEMENT","SEMATTRS_DB_OPERATION","SEMATTRS_DB_MSSQL_INSTANCE_NAME","SEMATTRS_DB_CASSANDRA_KEYSPACE","SEMATTRS_DB_CASSANDRA_PAGE_SIZE","SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL","SEMATTRS_DB_CASSANDRA_TABLE","SEMATTRS_DB_CASSANDRA_IDEMPOTENCE","SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT","SEMATTRS_DB_CASSANDRA_COORDINATOR_ID","SEMATTRS_DB_CASSANDRA_COORDINATOR_DC","SEMATTRS_DB_HBASE_NAMESPACE","SEMATTRS_DB_REDIS_DATABASE_INDEX","SEMATTRS_DB_MONGODB_COLLECTION","SEMATTRS_DB_SQL_TABLE","SEMATTRS_EXCEPTION_TYPE","SEMATTRS_EXCEPTION_MESSAGE","SEMATTRS_EXCEPTION_STACKTRACE","SEMATTRS_EXCEPTION_ESCAPED","SEMATTRS_FAAS_TRIGGER","SEMATTRS_FAAS_EXECUTION","SEMATTRS_FAAS_DOCUMENT_COLLECTION","SEMATTRS_FAAS_DOCUMENT_OPERATION","SEMATTRS_FAAS_DOCUMENT_TIME","SEMATTRS_FAAS_DOCUMENT_NAME","SEMATTRS_FAAS_TIME","SEMATTRS_FAAS_CRON","SEMATTRS_FAAS_COLDSTART","SEMATTRS_FAAS_INVOKED_NAME","SEMATTRS_FAAS_INVOKED_PROVIDER","SEMATTRS_FAAS_INVOKED_REGION","SEMATTRS_NET_TRANSPORT","SEMATTRS_NET_PEER_IP","SEMATTRS_NET_PEER_PORT","SEMATTRS_NET_PEER_NAME","SEMATTRS_NET_HOST_IP","SEMATTRS_NET_HOST_PORT","SEMATTRS_NET_HOST_NAME","SEMATTRS_NET_HOST_CONNECTION_TYPE","SEMATTRS_NET_HOST_CONNECTION_SUBTYPE","SEMATTRS_NET_HOST_CARRIER_NAME","SEMATTRS_NET_HOST_CARRIER_MCC","SEMATTRS_NET_HOST_CARRIER_MNC","SEMATTRS_NET_HOST_CARRIER_ICC","SEMATTRS_PEER_SERVICE","SEMATTRS_ENDUSER_ID","SEMATTRS_ENDUSER_ROLE","SEMATTRS_ENDUSER_SCOPE","SEMATTRS_THREAD_ID","SEMATTRS_THREAD_NAME","SEMATTRS_CODE_FUNCTION","SEMATTRS_CODE_NAMESPACE","SEMATTRS_CODE_FILEPATH","SEMATTRS_CODE_LINENO","SEMATTRS_HTTP_METHOD","SEMATTRS_HTTP_URL","SEMATTRS_HTTP_TARGET","SEMATTRS_HTTP_HOST","SEMATTRS_HTTP_SCHEME","SEMATTRS_HTTP_STATUS_CODE","SEMATTRS_HTTP_FLAVOR","SEMATTRS_HTTP_USER_AGENT","SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH","SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED","SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH","SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED","SEMATTRS_HTTP_SERVER_NAME","SEMATTRS_HTTP_ROUTE","SEMATTRS_HTTP_CLIENT_IP","SEMATTRS_AWS_DYNAMODB_TABLE_NAMES","SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY","SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS","SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY","SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY","SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ","SEMATTRS_AWS_DYNAMODB_PROJECTION","SEMATTRS_AWS_DYNAMODB_LIMIT","SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET","SEMATTRS_AWS_DYNAMODB_INDEX_NAME","SEMATTRS_AWS_DYNAMODB_SELECT","SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES","SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES","SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE","SEMATTRS_AWS_DYNAMODB_TABLE_COUNT","SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD","SEMATTRS_AWS_DYNAMODB_SEGMENT","SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS","SEMATTRS_AWS_DYNAMODB_COUNT","SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT","SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS","SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES","SEMATTRS_MESSAGING_SYSTEM","SEMATTRS_MESSAGING_DESTINATION","SEMATTRS_MESSAGING_DESTINATION_KIND","SEMATTRS_MESSAGING_TEMP_DESTINATION","SEMATTRS_MESSAGING_PROTOCOL","SEMATTRS_MESSAGING_PROTOCOL_VERSION","SEMATTRS_MESSAGING_URL","SEMATTRS_MESSAGING_MESSAGE_ID","SEMATTRS_MESSAGING_CONVERSATION_ID","SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES","SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES","SEMATTRS_MESSAGING_OPERATION","SEMATTRS_MESSAGING_CONSUMER_ID","SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY","SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY","SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP","SEMATTRS_MESSAGING_KAFKA_CLIENT_ID","SEMATTRS_MESSAGING_KAFKA_PARTITION","SEMATTRS_MESSAGING_KAFKA_TOMBSTONE","SEMATTRS_RPC_SYSTEM","SEMATTRS_RPC_SERVICE","SEMATTRS_RPC_METHOD","SEMATTRS_RPC_GRPC_STATUS_CODE","SEMATTRS_RPC_JSONRPC_VERSION","SEMATTRS_RPC_JSONRPC_REQUEST_ID","SEMATTRS_RPC_JSONRPC_ERROR_CODE","SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE","SEMATTRS_MESSAGE_TYPE","SEMATTRS_MESSAGE_ID","SEMATTRS_MESSAGE_COMPRESSED_SIZE","SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE","SemanticAttributes","TMP_DBSYSTEMVALUES_OTHER_SQL","TMP_DBSYSTEMVALUES_MSSQL","TMP_DBSYSTEMVALUES_MYSQL","TMP_DBSYSTEMVALUES_ORACLE","TMP_DBSYSTEMVALUES_DB2","TMP_DBSYSTEMVALUES_POSTGRESQL","TMP_DBSYSTEMVALUES_REDSHIFT","TMP_DBSYSTEMVALUES_HIVE","TMP_DBSYSTEMVALUES_CLOUDSCAPE","TMP_DBSYSTEMVALUES_HSQLDB","TMP_DBSYSTEMVALUES_PROGRESS","TMP_DBSYSTEMVALUES_MAXDB","TMP_DBSYSTEMVALUES_HANADB","TMP_DBSYSTEMVALUES_INGRES","TMP_DBSYSTEMVALUES_FIRSTSQL","TMP_DBSYSTEMVALUES_EDB","TMP_DBSYSTEMVALUES_CACHE","TMP_DBSYSTEMVALUES_ADABAS","TMP_DBSYSTEMVALUES_FIREBIRD","TMP_DBSYSTEMVALUES_DERBY","TMP_DBSYSTEMVALUES_FILEMAKER","TMP_DBSYSTEMVALUES_INFORMIX","TMP_DBSYSTEMVALUES_INSTANTDB","TMP_DBSYSTEMVALUES_INTERBASE","TMP_DBSYSTEMVALUES_MARIADB","TMP_DBSYSTEMVALUES_NETEZZA","TMP_DBSYSTEMVALUES_PERVASIVE","TMP_DBSYSTEMVALUES_POINTBASE","TMP_DBSYSTEMVALUES_SQLITE","TMP_DBSYSTEMVALUES_SYBASE","TMP_DBSYSTEMVALUES_TERADATA","TMP_DBSYSTEMVALUES_VERTICA","TMP_DBSYSTEMVALUES_H2","TMP_DBSYSTEMVALUES_COLDFUSION","TMP_DBSYSTEMVALUES_CASSANDRA","TMP_DBSYSTEMVALUES_HBASE","TMP_DBSYSTEMVALUES_MONGODB","TMP_DBSYSTEMVALUES_REDIS","TMP_DBSYSTEMVALUES_COUCHBASE","TMP_DBSYSTEMVALUES_COUCHDB","TMP_DBSYSTEMVALUES_COSMOSDB","TMP_DBSYSTEMVALUES_DYNAMODB","TMP_DBSYSTEMVALUES_NEO4J","TMP_DBSYSTEMVALUES_GEODE","TMP_DBSYSTEMVALUES_ELASTICSEARCH","TMP_DBSYSTEMVALUES_MEMCACHED","TMP_DBSYSTEMVALUES_COCKROACHDB","DBSYSTEMVALUES_OTHER_SQL","DBSYSTEMVALUES_MSSQL","DBSYSTEMVALUES_MYSQL","DBSYSTEMVALUES_ORACLE","DBSYSTEMVALUES_DB2","DBSYSTEMVALUES_POSTGRESQL","DBSYSTEMVALUES_REDSHIFT","DBSYSTEMVALUES_HIVE","DBSYSTEMVALUES_CLOUDSCAPE","DBSYSTEMVALUES_HSQLDB","DBSYSTEMVALUES_PROGRESS","DBSYSTEMVALUES_MAXDB","DBSYSTEMVALUES_HANADB","DBSYSTEMVALUES_INGRES","DBSYSTEMVALUES_FIRSTSQL","DBSYSTEMVALUES_EDB","DBSYSTEMVALUES_CACHE","DBSYSTEMVALUES_ADABAS","DBSYSTEMVALUES_FIREBIRD","DBSYSTEMVALUES_DERBY","DBSYSTEMVALUES_FILEMAKER","DBSYSTEMVALUES_INFORMIX","DBSYSTEMVALUES_INSTANTDB","DBSYSTEMVALUES_INTERBASE","DBSYSTEMVALUES_MARIADB","DBSYSTEMVALUES_NETEZZA","DBSYSTEMVALUES_PERVASIVE","DBSYSTEMVALUES_POINTBASE","DBSYSTEMVALUES_SQLITE","DBSYSTEMVALUES_SYBASE","DBSYSTEMVALUES_TERADATA","DBSYSTEMVALUES_VERTICA","DBSYSTEMVALUES_H2","DBSYSTEMVALUES_COLDFUSION","DBSYSTEMVALUES_CASSANDRA","DBSYSTEMVALUES_HBASE","DBSYSTEMVALUES_MONGODB","DBSYSTEMVALUES_REDIS","DBSYSTEMVALUES_COUCHBASE","DBSYSTEMVALUES_COUCHDB","DBSYSTEMVALUES_COSMOSDB","DBSYSTEMVALUES_DYNAMODB","DBSYSTEMVALUES_NEO4J","DBSYSTEMVALUES_GEODE","DBSYSTEMVALUES_ELASTICSEARCH","DBSYSTEMVALUES_MEMCACHED","DBSYSTEMVALUES_COCKROACHDB","DbSystemValues","TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL","TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM","TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM","TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM","TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE","TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO","TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE","TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE","TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY","TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL","TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL","DBCASSANDRACONSISTENCYLEVELVALUES_ALL","DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM","DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM","DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM","DBCASSANDRACONSISTENCYLEVELVALUES_ONE","DBCASSANDRACONSISTENCYLEVELVALUES_TWO","DBCASSANDRACONSISTENCYLEVELVALUES_THREE","DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE","DBCASSANDRACONSISTENCYLEVELVALUES_ANY","DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL","DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL","DbCassandraConsistencyLevelValues","TMP_FAASTRIGGERVALUES_DATASOURCE","TMP_FAASTRIGGERVALUES_HTTP","TMP_FAASTRIGGERVALUES_PUBSUB","TMP_FAASTRIGGERVALUES_TIMER","TMP_FAASTRIGGERVALUES_OTHER","FAASTRIGGERVALUES_DATASOURCE","FAASTRIGGERVALUES_HTTP","FAASTRIGGERVALUES_PUBSUB","FAASTRIGGERVALUES_TIMER","FAASTRIGGERVALUES_OTHER","FaasTriggerValues","TMP_FAASDOCUMENTOPERATIONVALUES_INSERT","TMP_FAASDOCUMENTOPERATIONVALUES_EDIT","TMP_FAASDOCUMENTOPERATIONVALUES_DELETE","FAASDOCUMENTOPERATIONVALUES_INSERT","FAASDOCUMENTOPERATIONVALUES_EDIT","FAASDOCUMENTOPERATIONVALUES_DELETE","FaasDocumentOperationValues","TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD","TMP_FAASINVOKEDPROVIDERVALUES_AWS","TMP_FAASINVOKEDPROVIDERVALUES_AZURE","TMP_FAASINVOKEDPROVIDERVALUES_GCP","FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD","FAASINVOKEDPROVIDERVALUES_AWS","FAASINVOKEDPROVIDERVALUES_AZURE","FAASINVOKEDPROVIDERVALUES_GCP","FaasInvokedProviderValues","TMP_NETTRANSPORTVALUES_IP_TCP","TMP_NETTRANSPORTVALUES_IP_UDP","TMP_NETTRANSPORTVALUES_IP","TMP_NETTRANSPORTVALUES_UNIX","TMP_NETTRANSPORTVALUES_PIPE","TMP_NETTRANSPORTVALUES_INPROC","TMP_NETTRANSPORTVALUES_OTHER","NETTRANSPORTVALUES_IP_TCP","NETTRANSPORTVALUES_IP_UDP","NETTRANSPORTVALUES_IP","NETTRANSPORTVALUES_UNIX","NETTRANSPORTVALUES_PIPE","NETTRANSPORTVALUES_INPROC","NETTRANSPORTVALUES_OTHER","NetTransportValues","TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI","TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED","TMP_NETHOSTCONNECTIONTYPEVALUES_CELL","TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE","TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN","NETHOSTCONNECTIONTYPEVALUES_WIFI","NETHOSTCONNECTIONTYPEVALUES_WIRED","NETHOSTCONNECTIONTYPEVALUES_CELL","NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE","NETHOSTCONNECTIONTYPEVALUES_UNKNOWN","NetHostConnectionTypeValues","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA","NETHOSTCONNECTIONSUBTYPEVALUES_GPRS","NETHOSTCONNECTIONSUBTYPEVALUES_EDGE","NETHOSTCONNECTIONSUBTYPEVALUES_UMTS","NETHOSTCONNECTIONSUBTYPEVALUES_CDMA","NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0","NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A","NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT","NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA","NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA","NETHOSTCONNECTIONSUBTYPEVALUES_HSPA","NETHOSTCONNECTIONSUBTYPEVALUES_IDEN","NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B","NETHOSTCONNECTIONSUBTYPEVALUES_LTE","NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD","NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP","NETHOSTCONNECTIONSUBTYPEVALUES_GSM","NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA","NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN","NETHOSTCONNECTIONSUBTYPEVALUES_NR","NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA","NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA","NetHostConnectionSubtypeValues","TMP_HTTPFLAVORVALUES_HTTP_1_0","TMP_HTTPFLAVORVALUES_HTTP_1_1","TMP_HTTPFLAVORVALUES_HTTP_2_0","TMP_HTTPFLAVORVALUES_SPDY","TMP_HTTPFLAVORVALUES_QUIC","HTTPFLAVORVALUES_HTTP_1_0","HTTPFLAVORVALUES_HTTP_1_1","HTTPFLAVORVALUES_HTTP_2_0","HTTPFLAVORVALUES_SPDY","HTTPFLAVORVALUES_QUIC","HttpFlavorValues","TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE","TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC","MESSAGINGDESTINATIONKINDVALUES_QUEUE","MESSAGINGDESTINATIONKINDVALUES_TOPIC","MessagingDestinationKindValues","TMP_MESSAGINGOPERATIONVALUES_RECEIVE","TMP_MESSAGINGOPERATIONVALUES_PROCESS","MESSAGINGOPERATIONVALUES_RECEIVE","MESSAGINGOPERATIONVALUES_PROCESS","MessagingOperationValues","TMP_RPCGRPCSTATUSCODEVALUES_OK","TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED","TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN","TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT","TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED","TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND","TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS","TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED","TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED","TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION","TMP_RPCGRPCSTATUSCODEVALUES_ABORTED","TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE","TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED","TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL","TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE","TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS","TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED","RPCGRPCSTATUSCODEVALUES_OK","RPCGRPCSTATUSCODEVALUES_CANCELLED","RPCGRPCSTATUSCODEVALUES_UNKNOWN","RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT","RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED","RPCGRPCSTATUSCODEVALUES_NOT_FOUND","RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS","RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED","RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED","RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION","RPCGRPCSTATUSCODEVALUES_ABORTED","RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE","RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED","RPCGRPCSTATUSCODEVALUES_INTERNAL","RPCGRPCSTATUSCODEVALUES_UNAVAILABLE","RPCGRPCSTATUSCODEVALUES_DATA_LOSS","RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED","RpcGrpcStatusCodeValues","TMP_MESSAGETYPEVALUES_SENT","TMP_MESSAGETYPEVALUES_RECEIVED","MESSAGETYPEVALUES_SENT","MESSAGETYPEVALUES_RECEIVED","MessageTypeValues","TMP_CLOUD_PROVIDER","TMP_CLOUD_ACCOUNT_ID","TMP_CLOUD_REGION","TMP_CLOUD_AVAILABILITY_ZONE","TMP_CLOUD_PLATFORM","TMP_AWS_ECS_CONTAINER_ARN","TMP_AWS_ECS_CLUSTER_ARN","TMP_AWS_ECS_LAUNCHTYPE","TMP_AWS_ECS_TASK_ARN","TMP_AWS_ECS_TASK_FAMILY","TMP_AWS_ECS_TASK_REVISION","TMP_AWS_EKS_CLUSTER_ARN","TMP_AWS_LOG_GROUP_NAMES","TMP_AWS_LOG_GROUP_ARNS","TMP_AWS_LOG_STREAM_NAMES","TMP_AWS_LOG_STREAM_ARNS","TMP_CONTAINER_NAME","TMP_CONTAINER_ID","TMP_CONTAINER_RUNTIME","TMP_CONTAINER_IMAGE_NAME","TMP_CONTAINER_IMAGE_TAG","TMP_DEPLOYMENT_ENVIRONMENT","TMP_DEVICE_ID","TMP_DEVICE_MODEL_IDENTIFIER","TMP_DEVICE_MODEL_NAME","TMP_FAAS_NAME","TMP_FAAS_ID","TMP_FAAS_VERSION","TMP_FAAS_INSTANCE","TMP_FAAS_MAX_MEMORY","TMP_HOST_ID","TMP_HOST_NAME","TMP_HOST_TYPE","TMP_HOST_ARCH","TMP_HOST_IMAGE_NAME","TMP_HOST_IMAGE_ID","TMP_HOST_IMAGE_VERSION","TMP_K8S_CLUSTER_NAME","TMP_K8S_NODE_NAME","TMP_K8S_NODE_UID","TMP_K8S_NAMESPACE_NAME","TMP_K8S_POD_UID","TMP_K8S_POD_NAME","TMP_K8S_CONTAINER_NAME","TMP_K8S_REPLICASET_UID","TMP_K8S_REPLICASET_NAME","TMP_K8S_DEPLOYMENT_UID","TMP_K8S_DEPLOYMENT_NAME","TMP_K8S_STATEFULSET_UID","TMP_K8S_STATEFULSET_NAME","TMP_K8S_DAEMONSET_UID","TMP_K8S_DAEMONSET_NAME","TMP_K8S_JOB_UID","TMP_K8S_JOB_NAME","TMP_K8S_CRONJOB_UID","TMP_K8S_CRONJOB_NAME","TMP_OS_TYPE","TMP_OS_DESCRIPTION","TMP_OS_NAME","TMP_OS_VERSION","TMP_PROCESS_PID","TMP_PROCESS_EXECUTABLE_NAME","TMP_PROCESS_EXECUTABLE_PATH","TMP_PROCESS_COMMAND","TMP_PROCESS_COMMAND_LINE","TMP_PROCESS_COMMAND_ARGS","TMP_PROCESS_OWNER","TMP_PROCESS_RUNTIME_NAME","TMP_PROCESS_RUNTIME_VERSION","TMP_PROCESS_RUNTIME_DESCRIPTION","TMP_SERVICE_NAME","TMP_SERVICE_NAMESPACE","TMP_SERVICE_INSTANCE_ID","TMP_SERVICE_VERSION","TMP_TELEMETRY_SDK_NAME","TMP_TELEMETRY_SDK_LANGUAGE","TMP_TELEMETRY_SDK_VERSION","TMP_TELEMETRY_AUTO_VERSION","TMP_WEBENGINE_NAME","TMP_WEBENGINE_VERSION","TMP_WEBENGINE_DESCRIPTION","SEMRESATTRS_CLOUD_PROVIDER","SEMRESATTRS_CLOUD_ACCOUNT_ID","SEMRESATTRS_CLOUD_REGION","SEMRESATTRS_CLOUD_AVAILABILITY_ZONE","SEMRESATTRS_CLOUD_PLATFORM","SEMRESATTRS_AWS_ECS_CONTAINER_ARN","SEMRESATTRS_AWS_ECS_CLUSTER_ARN","SEMRESATTRS_AWS_ECS_LAUNCHTYPE","SEMRESATTRS_AWS_ECS_TASK_ARN","SEMRESATTRS_AWS_ECS_TASK_FAMILY","SEMRESATTRS_AWS_ECS_TASK_REVISION","SEMRESATTRS_AWS_EKS_CLUSTER_ARN","SEMRESATTRS_AWS_LOG_GROUP_NAMES","SEMRESATTRS_AWS_LOG_GROUP_ARNS","SEMRESATTRS_AWS_LOG_STREAM_NAMES","SEMRESATTRS_AWS_LOG_STREAM_ARNS","SEMRESATTRS_CONTAINER_NAME","SEMRESATTRS_CONTAINER_ID","SEMRESATTRS_CONTAINER_RUNTIME","SEMRESATTRS_CONTAINER_IMAGE_NAME","SEMRESATTRS_CONTAINER_IMAGE_TAG","SEMRESATTRS_DEPLOYMENT_ENVIRONMENT","SEMRESATTRS_DEVICE_ID","SEMRESATTRS_DEVICE_MODEL_IDENTIFIER","SEMRESATTRS_DEVICE_MODEL_NAME","SEMRESATTRS_FAAS_NAME","SEMRESATTRS_FAAS_ID","SEMRESATTRS_FAAS_VERSION","SEMRESATTRS_FAAS_INSTANCE","SEMRESATTRS_FAAS_MAX_MEMORY","SEMRESATTRS_HOST_ID","SEMRESATTRS_HOST_NAME","SEMRESATTRS_HOST_TYPE","SEMRESATTRS_HOST_ARCH","SEMRESATTRS_HOST_IMAGE_NAME","SEMRESATTRS_HOST_IMAGE_ID","SEMRESATTRS_HOST_IMAGE_VERSION","SEMRESATTRS_K8S_CLUSTER_NAME","SEMRESATTRS_K8S_NODE_NAME","SEMRESATTRS_K8S_NODE_UID","SEMRESATTRS_K8S_NAMESPACE_NAME","SEMRESATTRS_K8S_POD_UID","SEMRESATTRS_K8S_POD_NAME","SEMRESATTRS_K8S_CONTAINER_NAME","SEMRESATTRS_K8S_REPLICASET_UID","SEMRESATTRS_K8S_REPLICASET_NAME","SEMRESATTRS_K8S_DEPLOYMENT_UID","SEMRESATTRS_K8S_DEPLOYMENT_NAME","SEMRESATTRS_K8S_STATEFULSET_UID","SEMRESATTRS_K8S_STATEFULSET_NAME","SEMRESATTRS_K8S_DAEMONSET_UID","SEMRESATTRS_K8S_DAEMONSET_NAME","SEMRESATTRS_K8S_JOB_UID","SEMRESATTRS_K8S_JOB_NAME","SEMRESATTRS_K8S_CRONJOB_UID","SEMRESATTRS_K8S_CRONJOB_NAME","SEMRESATTRS_OS_TYPE","SEMRESATTRS_OS_DESCRIPTION","SEMRESATTRS_OS_NAME","SEMRESATTRS_OS_VERSION","SEMRESATTRS_PROCESS_PID","SEMRESATTRS_PROCESS_EXECUTABLE_NAME","SEMRESATTRS_PROCESS_EXECUTABLE_PATH","SEMRESATTRS_PROCESS_COMMAND","SEMRESATTRS_PROCESS_COMMAND_LINE","SEMRESATTRS_PROCESS_COMMAND_ARGS","SEMRESATTRS_PROCESS_OWNER","SEMRESATTRS_PROCESS_RUNTIME_NAME","SEMRESATTRS_PROCESS_RUNTIME_VERSION","SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION","SEMRESATTRS_SERVICE_NAME","SEMRESATTRS_SERVICE_NAMESPACE","SEMRESATTRS_SERVICE_INSTANCE_ID","SEMRESATTRS_SERVICE_VERSION","SEMRESATTRS_TELEMETRY_SDK_NAME","SEMRESATTRS_TELEMETRY_SDK_LANGUAGE","SEMRESATTRS_TELEMETRY_SDK_VERSION","SEMRESATTRS_TELEMETRY_AUTO_VERSION","SEMRESATTRS_WEBENGINE_NAME","SEMRESATTRS_WEBENGINE_VERSION","SEMRESATTRS_WEBENGINE_DESCRIPTION","SemanticResourceAttributes","TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD","TMP_CLOUDPROVIDERVALUES_AWS","TMP_CLOUDPROVIDERVALUES_AZURE","TMP_CLOUDPROVIDERVALUES_GCP","CLOUDPROVIDERVALUES_ALIBABA_CLOUD","CLOUDPROVIDERVALUES_AWS","CLOUDPROVIDERVALUES_AZURE","CLOUDPROVIDERVALUES_GCP","CloudProviderValues","TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS","TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC","TMP_CLOUDPLATFORMVALUES_AWS_EC2","TMP_CLOUDPLATFORMVALUES_AWS_ECS","TMP_CLOUDPLATFORMVALUES_AWS_EKS","TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA","TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK","TMP_CLOUDPLATFORMVALUES_AZURE_VM","TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES","TMP_CLOUDPLATFORMVALUES_AZURE_AKS","TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS","TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE","TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE","TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN","TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE","TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS","TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE","CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS","CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC","CLOUDPLATFORMVALUES_AWS_EC2","CLOUDPLATFORMVALUES_AWS_ECS","CLOUDPLATFORMVALUES_AWS_EKS","CLOUDPLATFORMVALUES_AWS_LAMBDA","CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK","CLOUDPLATFORMVALUES_AZURE_VM","CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES","CLOUDPLATFORMVALUES_AZURE_AKS","CLOUDPLATFORMVALUES_AZURE_FUNCTIONS","CLOUDPLATFORMVALUES_AZURE_APP_SERVICE","CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE","CLOUDPLATFORMVALUES_GCP_CLOUD_RUN","CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE","CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS","CLOUDPLATFORMVALUES_GCP_APP_ENGINE","CloudPlatformValues","TMP_AWSECSLAUNCHTYPEVALUES_EC2","TMP_AWSECSLAUNCHTYPEVALUES_FARGATE","AWSECSLAUNCHTYPEVALUES_EC2","AWSECSLAUNCHTYPEVALUES_FARGATE","AwsEcsLaunchtypeValues","TMP_HOSTARCHVALUES_AMD64","TMP_HOSTARCHVALUES_ARM32","TMP_HOSTARCHVALUES_ARM64","TMP_HOSTARCHVALUES_IA64","TMP_HOSTARCHVALUES_PPC32","TMP_HOSTARCHVALUES_PPC64","TMP_HOSTARCHVALUES_X86","HOSTARCHVALUES_AMD64","HOSTARCHVALUES_ARM32","HOSTARCHVALUES_ARM64","HOSTARCHVALUES_IA64","HOSTARCHVALUES_PPC32","HOSTARCHVALUES_PPC64","HOSTARCHVALUES_X86","HostArchValues","TMP_OSTYPEVALUES_WINDOWS","TMP_OSTYPEVALUES_LINUX","TMP_OSTYPEVALUES_DARWIN","TMP_OSTYPEVALUES_FREEBSD","TMP_OSTYPEVALUES_NETBSD","TMP_OSTYPEVALUES_OPENBSD","TMP_OSTYPEVALUES_DRAGONFLYBSD","TMP_OSTYPEVALUES_HPUX","TMP_OSTYPEVALUES_AIX","TMP_OSTYPEVALUES_SOLARIS","TMP_OSTYPEVALUES_Z_OS","OSTYPEVALUES_WINDOWS","OSTYPEVALUES_LINUX","OSTYPEVALUES_DARWIN","OSTYPEVALUES_FREEBSD","OSTYPEVALUES_NETBSD","OSTYPEVALUES_OPENBSD","OSTYPEVALUES_DRAGONFLYBSD","OSTYPEVALUES_HPUX","OSTYPEVALUES_AIX","OSTYPEVALUES_SOLARIS","OSTYPEVALUES_Z_OS","OsTypeValues","TMP_TELEMETRYSDKLANGUAGEVALUES_CPP","TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET","TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG","TMP_TELEMETRYSDKLANGUAGEVALUES_GO","TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA","TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS","TMP_TELEMETRYSDKLANGUAGEVALUES_PHP","TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON","TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY","TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS","TELEMETRYSDKLANGUAGEVALUES_CPP","TELEMETRYSDKLANGUAGEVALUES_DOTNET","TELEMETRYSDKLANGUAGEVALUES_ERLANG","TELEMETRYSDKLANGUAGEVALUES_GO","TELEMETRYSDKLANGUAGEVALUES_JAVA","TELEMETRYSDKLANGUAGEVALUES_NODEJS","TELEMETRYSDKLANGUAGEVALUES_PHP","TELEMETRYSDKLANGUAGEVALUES_PYTHON","TELEMETRYSDKLANGUAGEVALUES_RUBY","TELEMETRYSDKLANGUAGEVALUES_WEBJS","TelemetrySdkLanguageValues","ATTR_ASPNETCORE_RATE_LIMITING_RESULT","ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED","ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER","ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER","ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED","ATTR_TELEMETRY_SDK_LANGUAGE","TELEMETRY_SDK_LANGUAGE_VALUE_CPP","TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET","TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG","TELEMETRY_SDK_LANGUAGE_VALUE_GO","TELEMETRY_SDK_LANGUAGE_VALUE_JAVA","TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS","TELEMETRY_SDK_LANGUAGE_VALUE_PHP","TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON","TELEMETRY_SDK_LANGUAGE_VALUE_RUBY","TELEMETRY_SDK_LANGUAGE_VALUE_RUST","TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT","TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS","ATTR_TELEMETRY_SDK_NAME","ATTR_TELEMETRY_SDK_VERSION","ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE","ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT","ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED","ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED","ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED","ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED","ATTR_ASPNETCORE_RATE_LIMITING_POLICY","ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED","ATTR_ASPNETCORE_ROUTING_IS_FALLBACK","ATTR_ASPNETCORE_ROUTING_MATCH_STATUS","ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE","ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS","ATTR_CLIENT_ADDRESS","ATTR_CLIENT_PORT","ATTR_ERROR_TYPE","ERROR_TYPE_VALUE_OTHER","ATTR_EXCEPTION_ESCAPED","ATTR_EXCEPTION_MESSAGE","ATTR_EXCEPTION_STACKTRACE","ATTR_EXCEPTION_TYPE","ATTR_HTTP_REQUEST_HEADER","ATTR_HTTP_REQUEST_METHOD","HTTP_REQUEST_METHOD_VALUE_OTHER","HTTP_REQUEST_METHOD_VALUE_CONNECT","HTTP_REQUEST_METHOD_VALUE_DELETE","HTTP_REQUEST_METHOD_VALUE_GET","HTTP_REQUEST_METHOD_VALUE_HEAD","HTTP_REQUEST_METHOD_VALUE_OPTIONS","HTTP_REQUEST_METHOD_VALUE_PATCH","HTTP_REQUEST_METHOD_VALUE_POST","HTTP_REQUEST_METHOD_VALUE_PUT","HTTP_REQUEST_METHOD_VALUE_TRACE","ATTR_HTTP_REQUEST_METHOD_ORIGINAL","ATTR_HTTP_REQUEST_RESEND_COUNT","ATTR_HTTP_RESPONSE_HEADER","ATTR_HTTP_RESPONSE_STATUS_CODE","ATTR_HTTP_ROUTE","ATTR_JVM_GC_ACTION","ATTR_JVM_GC_NAME","ATTR_JVM_MEMORY_POOL_NAME","ATTR_JVM_MEMORY_TYPE","JVM_MEMORY_TYPE_VALUE_HEAP","JVM_MEMORY_TYPE_VALUE_NON_HEAP","ATTR_JVM_THREAD_DAEMON","ATTR_JVM_THREAD_STATE","JVM_THREAD_STATE_VALUE_BLOCKED","JVM_THREAD_STATE_VALUE_NEW","JVM_THREAD_STATE_VALUE_RUNNABLE","JVM_THREAD_STATE_VALUE_TERMINATED","JVM_THREAD_STATE_VALUE_TIMED_WAITING","JVM_THREAD_STATE_VALUE_WAITING","ATTR_NETWORK_LOCAL_ADDRESS","ATTR_NETWORK_LOCAL_PORT","ATTR_NETWORK_PEER_ADDRESS","ATTR_NETWORK_PEER_PORT","ATTR_NETWORK_PROTOCOL_NAME","ATTR_NETWORK_PROTOCOL_VERSION","ATTR_NETWORK_TRANSPORT","NETWORK_TRANSPORT_VALUE_PIPE","NETWORK_TRANSPORT_VALUE_QUIC","NETWORK_TRANSPORT_VALUE_TCP","NETWORK_TRANSPORT_VALUE_UDP","NETWORK_TRANSPORT_VALUE_UNIX","ATTR_NETWORK_TYPE","NETWORK_TYPE_VALUE_IPV4","NETWORK_TYPE_VALUE_IPV6","ATTR_OTEL_SCOPE_NAME","ATTR_OTEL_SCOPE_VERSION","ATTR_OTEL_STATUS_CODE","OTEL_STATUS_CODE_VALUE_ERROR","OTEL_STATUS_CODE_VALUE_OK","ATTR_OTEL_STATUS_DESCRIPTION","ATTR_SERVER_ADDRESS","ATTR_SERVER_PORT","ATTR_SERVICE_NAME","ATTR_SERVICE_VERSION","ATTR_SIGNALR_CONNECTION_STATUS","SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN","SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE","SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT","ATTR_SIGNALR_TRANSPORT","SIGNALR_TRANSPORT_VALUE_LONG_POLLING","SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS","SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS","ATTR_URL_FRAGMENT","ATTR_URL_FULL","ATTR_URL_PATH","ATTR_URL_QUERY","ATTR_URL_SCHEME","ATTR_USER_AGENT_ORIGINAL","METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS","METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES","METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS","METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE","METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION","METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS","METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS","METRIC_HTTP_CLIENT_REQUEST_DURATION","METRIC_HTTP_SERVER_REQUEST_DURATION","METRIC_JVM_CLASS_COUNT","METRIC_JVM_CLASS_LOADED","METRIC_JVM_CLASS_UNLOADED","METRIC_JVM_CPU_COUNT","METRIC_JVM_CPU_RECENT_UTILIZATION","METRIC_JVM_CPU_TIME","METRIC_JVM_GC_DURATION","METRIC_JVM_MEMORY_COMMITTED","METRIC_JVM_MEMORY_LIMIT","METRIC_JVM_MEMORY_USED","METRIC_JVM_MEMORY_USED_AFTER_LAST_GC","METRIC_JVM_THREAD_COUNT","METRIC_KESTREL_ACTIVE_CONNECTIONS","METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES","METRIC_KESTREL_CONNECTION_DURATION","METRIC_KESTREL_QUEUED_CONNECTIONS","METRIC_KESTREL_QUEUED_REQUESTS","METRIC_KESTREL_REJECTED_CONNECTIONS","METRIC_KESTREL_TLS_HANDSHAKE_DURATION","METRIC_KESTREL_UPGRADED_CONNECTIONS","METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS","METRIC_SIGNALR_SERVER_CONNECTION_DURATION","version_1","semantic_conventions_1","environment_1","RandomIdGenerator_1","node_1","platform_1","api_1","context","api_1","suppress_tracing_1","TraceState_1","context","context","api_1","AlwaysOffSampler","api_1","AlwaysOnSampler","api_1","global_error_handler_1","AlwaysOffSampler_1","AlwaysOnSampler_1","ParentBasedSampler","context","api_1","TraceIdRatioBasedSampler","api_1","suppress_tracing_1","utils_1","platform_1","AlwaysOffSampler_1","AlwaysOnSampler_1","ParentBasedSampler_1","TraceIdRatioBasedSampler_1","OtSpanKind","outputData: unknown","outputSchema: JsonSchema","outputValueHash: string","outputSchemaHash: string","metadata: MetadataObject | undefined","ExportResultCode","runtime_1","runtime_rpc_1","twitch_twirp_error_code_1","twirp_format_1","twitch_twirp_error_code_1","TwirpFetchTransport","_a","TwirpFetchTransport","protoSpans: Span[]","request: ExportSpansRequest","ExportResultCode","OtelSpanKind","DriftSpanKind","filteredSpansBasedOnLibraryName: ReadableSpan[]","filteredBlockedSpans: ReadableSpan[]","cleanSpans: CleanSpanData[]","ExportResultCode","context","events","api_1","AbstractAsyncHooksContextManager_1","context","api_1","context","api_1","api_1","core_1","common_1","constants_1","context","api_1","core_1","constants_1","context","core_1","constants_1","types_1","context","createConstMap","TMP_AWS_LAMBDA_INVOKED_ARN","TMP_DB_SYSTEM","TMP_DB_CONNECTION_STRING","TMP_DB_USER","TMP_DB_JDBC_DRIVER_CLASSNAME","TMP_DB_NAME","TMP_DB_STATEMENT","TMP_DB_OPERATION","TMP_DB_MSSQL_INSTANCE_NAME","TMP_DB_CASSANDRA_KEYSPACE","TMP_DB_CASSANDRA_PAGE_SIZE","TMP_DB_CASSANDRA_CONSISTENCY_LEVEL","TMP_DB_CASSANDRA_TABLE","TMP_DB_CASSANDRA_IDEMPOTENCE","TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT","TMP_DB_CASSANDRA_COORDINATOR_ID","TMP_DB_CASSANDRA_COORDINATOR_DC","TMP_DB_HBASE_NAMESPACE","TMP_DB_REDIS_DATABASE_INDEX","TMP_DB_MONGODB_COLLECTION","TMP_DB_SQL_TABLE","TMP_EXCEPTION_TYPE","TMP_EXCEPTION_MESSAGE","TMP_EXCEPTION_STACKTRACE","TMP_EXCEPTION_ESCAPED","TMP_FAAS_TRIGGER","TMP_FAAS_EXECUTION","TMP_FAAS_DOCUMENT_COLLECTION","TMP_FAAS_DOCUMENT_OPERATION","TMP_FAAS_DOCUMENT_TIME","TMP_FAAS_DOCUMENT_NAME","TMP_FAAS_TIME","TMP_FAAS_CRON","TMP_FAAS_COLDSTART","TMP_FAAS_INVOKED_NAME","TMP_FAAS_INVOKED_PROVIDER","TMP_FAAS_INVOKED_REGION","TMP_NET_TRANSPORT","TMP_NET_PEER_IP","TMP_NET_PEER_PORT","TMP_NET_PEER_NAME","TMP_NET_HOST_IP","TMP_NET_HOST_PORT","TMP_NET_HOST_NAME","TMP_NET_HOST_CONNECTION_TYPE","TMP_NET_HOST_CONNECTION_SUBTYPE","TMP_NET_HOST_CARRIER_NAME","TMP_NET_HOST_CARRIER_MCC","TMP_NET_HOST_CARRIER_MNC","TMP_NET_HOST_CARRIER_ICC","TMP_PEER_SERVICE","TMP_ENDUSER_ID","TMP_ENDUSER_ROLE","TMP_ENDUSER_SCOPE","TMP_THREAD_ID","TMP_THREAD_NAME","TMP_CODE_FUNCTION","TMP_CODE_NAMESPACE","TMP_CODE_FILEPATH","TMP_CODE_LINENO","TMP_HTTP_METHOD","TMP_HTTP_URL","TMP_HTTP_TARGET","TMP_HTTP_HOST","TMP_HTTP_SCHEME","TMP_HTTP_STATUS_CODE","TMP_HTTP_FLAVOR","TMP_HTTP_USER_AGENT","TMP_HTTP_REQUEST_CONTENT_LENGTH","TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED","TMP_HTTP_RESPONSE_CONTENT_LENGTH","TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED","TMP_HTTP_SERVER_NAME","TMP_HTTP_ROUTE","TMP_HTTP_CLIENT_IP","TMP_AWS_DYNAMODB_TABLE_NAMES","TMP_AWS_DYNAMODB_CONSUMED_CAPACITY","TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS","TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY","TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY","TMP_AWS_DYNAMODB_CONSISTENT_READ","TMP_AWS_DYNAMODB_PROJECTION","TMP_AWS_DYNAMODB_LIMIT","TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET","TMP_AWS_DYNAMODB_INDEX_NAME","TMP_AWS_DYNAMODB_SELECT","TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES","TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES","TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE","TMP_AWS_DYNAMODB_TABLE_COUNT","TMP_AWS_DYNAMODB_SCAN_FORWARD","TMP_AWS_DYNAMODB_SEGMENT","TMP_AWS_DYNAMODB_TOTAL_SEGMENTS","TMP_AWS_DYNAMODB_COUNT","TMP_AWS_DYNAMODB_SCANNED_COUNT","TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS","TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES","TMP_MESSAGING_SYSTEM","TMP_MESSAGING_DESTINATION","TMP_MESSAGING_DESTINATION_KIND","TMP_MESSAGING_TEMP_DESTINATION","TMP_MESSAGING_PROTOCOL","TMP_MESSAGING_PROTOCOL_VERSION","TMP_MESSAGING_URL","TMP_MESSAGING_MESSAGE_ID","TMP_MESSAGING_CONVERSATION_ID","TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES","TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES","TMP_MESSAGING_OPERATION","TMP_MESSAGING_CONSUMER_ID","TMP_MESSAGING_RABBITMQ_ROUTING_KEY","TMP_MESSAGING_KAFKA_MESSAGE_KEY","TMP_MESSAGING_KAFKA_CONSUMER_GROUP","TMP_MESSAGING_KAFKA_CLIENT_ID","TMP_MESSAGING_KAFKA_PARTITION","TMP_MESSAGING_KAFKA_TOMBSTONE","TMP_RPC_SYSTEM","TMP_RPC_SERVICE","TMP_RPC_METHOD","TMP_RPC_GRPC_STATUS_CODE","TMP_RPC_JSONRPC_VERSION","TMP_RPC_JSONRPC_REQUEST_ID","TMP_RPC_JSONRPC_ERROR_CODE","TMP_RPC_JSONRPC_ERROR_MESSAGE","TMP_MESSAGE_TYPE","TMP_MESSAGE_ID","TMP_MESSAGE_COMPRESSED_SIZE","TMP_MESSAGE_UNCOMPRESSED_SIZE","SEMATTRS_AWS_LAMBDA_INVOKED_ARN","SEMATTRS_DB_SYSTEM","SEMATTRS_DB_CONNECTION_STRING","SEMATTRS_DB_USER","SEMATTRS_DB_JDBC_DRIVER_CLASSNAME","SEMATTRS_DB_NAME","SEMATTRS_DB_STATEMENT","SEMATTRS_DB_OPERATION","SEMATTRS_DB_MSSQL_INSTANCE_NAME","SEMATTRS_DB_CASSANDRA_KEYSPACE","SEMATTRS_DB_CASSANDRA_PAGE_SIZE","SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL","SEMATTRS_DB_CASSANDRA_TABLE","SEMATTRS_DB_CASSANDRA_IDEMPOTENCE","SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT","SEMATTRS_DB_CASSANDRA_COORDINATOR_ID","SEMATTRS_DB_CASSANDRA_COORDINATOR_DC","SEMATTRS_DB_HBASE_NAMESPACE","SEMATTRS_DB_REDIS_DATABASE_INDEX","SEMATTRS_DB_MONGODB_COLLECTION","SEMATTRS_DB_SQL_TABLE","SEMATTRS_EXCEPTION_TYPE","SEMATTRS_EXCEPTION_MESSAGE","SEMATTRS_EXCEPTION_STACKTRACE","SEMATTRS_EXCEPTION_ESCAPED","SEMATTRS_FAAS_TRIGGER","SEMATTRS_FAAS_EXECUTION","SEMATTRS_FAAS_DOCUMENT_COLLECTION","SEMATTRS_FAAS_DOCUMENT_OPERATION","SEMATTRS_FAAS_DOCUMENT_TIME","SEMATTRS_FAAS_DOCUMENT_NAME","SEMATTRS_FAAS_TIME","SEMATTRS_FAAS_CRON","SEMATTRS_FAAS_COLDSTART","SEMATTRS_FAAS_INVOKED_NAME","SEMATTRS_FAAS_INVOKED_PROVIDER","SEMATTRS_FAAS_INVOKED_REGION","SEMATTRS_NET_TRANSPORT","SEMATTRS_NET_PEER_IP","SEMATTRS_NET_PEER_PORT","SEMATTRS_NET_PEER_NAME","SEMATTRS_NET_HOST_IP","SEMATTRS_NET_HOST_PORT","SEMATTRS_NET_HOST_NAME","SEMATTRS_NET_HOST_CONNECTION_TYPE","SEMATTRS_NET_HOST_CONNECTION_SUBTYPE","SEMATTRS_NET_HOST_CARRIER_NAME","SEMATTRS_NET_HOST_CARRIER_MCC","SEMATTRS_NET_HOST_CARRIER_MNC","SEMATTRS_NET_HOST_CARRIER_ICC","SEMATTRS_PEER_SERVICE","SEMATTRS_ENDUSER_ID","SEMATTRS_ENDUSER_ROLE","SEMATTRS_ENDUSER_SCOPE","SEMATTRS_THREAD_ID","SEMATTRS_THREAD_NAME","SEMATTRS_CODE_FUNCTION","SEMATTRS_CODE_NAMESPACE","SEMATTRS_CODE_FILEPATH","SEMATTRS_CODE_LINENO","SEMATTRS_HTTP_METHOD","SEMATTRS_HTTP_URL","SEMATTRS_HTTP_TARGET","SEMATTRS_HTTP_HOST","SEMATTRS_HTTP_SCHEME","SEMATTRS_HTTP_STATUS_CODE","SEMATTRS_HTTP_FLAVOR","SEMATTRS_HTTP_USER_AGENT","SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH","SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED","SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH","SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED","SEMATTRS_HTTP_SERVER_NAME","SEMATTRS_HTTP_ROUTE","SEMATTRS_HTTP_CLIENT_IP","SEMATTRS_AWS_DYNAMODB_TABLE_NAMES","SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY","SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS","SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY","SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY","SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ","SEMATTRS_AWS_DYNAMODB_PROJECTION","SEMATTRS_AWS_DYNAMODB_LIMIT","SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET","SEMATTRS_AWS_DYNAMODB_INDEX_NAME","SEMATTRS_AWS_DYNAMODB_SELECT","SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES","SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES","SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE","SEMATTRS_AWS_DYNAMODB_TABLE_COUNT","SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD","SEMATTRS_AWS_DYNAMODB_SEGMENT","SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS","SEMATTRS_AWS_DYNAMODB_COUNT","SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT","SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS","SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES","SEMATTRS_MESSAGING_SYSTEM","SEMATTRS_MESSAGING_DESTINATION","SEMATTRS_MESSAGING_DESTINATION_KIND","SEMATTRS_MESSAGING_TEMP_DESTINATION","SEMATTRS_MESSAGING_PROTOCOL","SEMATTRS_MESSAGING_PROTOCOL_VERSION","SEMATTRS_MESSAGING_URL","SEMATTRS_MESSAGING_MESSAGE_ID","SEMATTRS_MESSAGING_CONVERSATION_ID","SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES","SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES","SEMATTRS_MESSAGING_OPERATION","SEMATTRS_MESSAGING_CONSUMER_ID","SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY","SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY","SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP","SEMATTRS_MESSAGING_KAFKA_CLIENT_ID","SEMATTRS_MESSAGING_KAFKA_PARTITION","SEMATTRS_MESSAGING_KAFKA_TOMBSTONE","SEMATTRS_RPC_SYSTEM","SEMATTRS_RPC_SERVICE","SEMATTRS_RPC_METHOD","SEMATTRS_RPC_GRPC_STATUS_CODE","SEMATTRS_RPC_JSONRPC_VERSION","SEMATTRS_RPC_JSONRPC_REQUEST_ID","SEMATTRS_RPC_JSONRPC_ERROR_CODE","SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE","SEMATTRS_MESSAGE_TYPE","SEMATTRS_MESSAGE_ID","SEMATTRS_MESSAGE_COMPRESSED_SIZE","SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE","SemanticAttributes","TMP_DBSYSTEMVALUES_OTHER_SQL","TMP_DBSYSTEMVALUES_MSSQL","TMP_DBSYSTEMVALUES_MYSQL","TMP_DBSYSTEMVALUES_ORACLE","TMP_DBSYSTEMVALUES_DB2","TMP_DBSYSTEMVALUES_POSTGRESQL","TMP_DBSYSTEMVALUES_REDSHIFT","TMP_DBSYSTEMVALUES_HIVE","TMP_DBSYSTEMVALUES_CLOUDSCAPE","TMP_DBSYSTEMVALUES_HSQLDB","TMP_DBSYSTEMVALUES_PROGRESS","TMP_DBSYSTEMVALUES_MAXDB","TMP_DBSYSTEMVALUES_HANADB","TMP_DBSYSTEMVALUES_INGRES","TMP_DBSYSTEMVALUES_FIRSTSQL","TMP_DBSYSTEMVALUES_EDB","TMP_DBSYSTEMVALUES_CACHE","TMP_DBSYSTEMVALUES_ADABAS","TMP_DBSYSTEMVALUES_FIREBIRD","TMP_DBSYSTEMVALUES_DERBY","TMP_DBSYSTEMVALUES_FILEMAKER","TMP_DBSYSTEMVALUES_INFORMIX","TMP_DBSYSTEMVALUES_INSTANTDB","TMP_DBSYSTEMVALUES_INTERBASE","TMP_DBSYSTEMVALUES_MARIADB","TMP_DBSYSTEMVALUES_NETEZZA","TMP_DBSYSTEMVALUES_PERVASIVE","TMP_DBSYSTEMVALUES_POINTBASE","TMP_DBSYSTEMVALUES_SQLITE","TMP_DBSYSTEMVALUES_SYBASE","TMP_DBSYSTEMVALUES_TERADATA","TMP_DBSYSTEMVALUES_VERTICA","TMP_DBSYSTEMVALUES_H2","TMP_DBSYSTEMVALUES_COLDFUSION","TMP_DBSYSTEMVALUES_CASSANDRA","TMP_DBSYSTEMVALUES_HBASE","TMP_DBSYSTEMVALUES_MONGODB","TMP_DBSYSTEMVALUES_REDIS","TMP_DBSYSTEMVALUES_COUCHBASE","TMP_DBSYSTEMVALUES_COUCHDB","TMP_DBSYSTEMVALUES_COSMOSDB","TMP_DBSYSTEMVALUES_DYNAMODB","TMP_DBSYSTEMVALUES_NEO4J","TMP_DBSYSTEMVALUES_GEODE","TMP_DBSYSTEMVALUES_ELASTICSEARCH","TMP_DBSYSTEMVALUES_MEMCACHED","TMP_DBSYSTEMVALUES_COCKROACHDB","DBSYSTEMVALUES_OTHER_SQL","DBSYSTEMVALUES_MSSQL","DBSYSTEMVALUES_MYSQL","DBSYSTEMVALUES_ORACLE","DBSYSTEMVALUES_DB2","DBSYSTEMVALUES_POSTGRESQL","DBSYSTEMVALUES_REDSHIFT","DBSYSTEMVALUES_HIVE","DBSYSTEMVALUES_CLOUDSCAPE","DBSYSTEMVALUES_HSQLDB","DBSYSTEMVALUES_PROGRESS","DBSYSTEMVALUES_MAXDB","DBSYSTEMVALUES_HANADB","DBSYSTEMVALUES_INGRES","DBSYSTEMVALUES_FIRSTSQL","DBSYSTEMVALUES_EDB","DBSYSTEMVALUES_CACHE","DBSYSTEMVALUES_ADABAS","DBSYSTEMVALUES_FIREBIRD","DBSYSTEMVALUES_DERBY","DBSYSTEMVALUES_FILEMAKER","DBSYSTEMVALUES_INFORMIX","DBSYSTEMVALUES_INSTANTDB","DBSYSTEMVALUES_INTERBASE","DBSYSTEMVALUES_MARIADB","DBSYSTEMVALUES_NETEZZA","DBSYSTEMVALUES_PERVASIVE","DBSYSTEMVALUES_POINTBASE","DBSYSTEMVALUES_SQLITE","DBSYSTEMVALUES_SYBASE","DBSYSTEMVALUES_TERADATA","DBSYSTEMVALUES_VERTICA","DBSYSTEMVALUES_H2","DBSYSTEMVALUES_COLDFUSION","DBSYSTEMVALUES_CASSANDRA","DBSYSTEMVALUES_HBASE","DBSYSTEMVALUES_MONGODB","DBSYSTEMVALUES_REDIS","DBSYSTEMVALUES_COUCHBASE","DBSYSTEMVALUES_COUCHDB","DBSYSTEMVALUES_COSMOSDB","DBSYSTEMVALUES_DYNAMODB","DBSYSTEMVALUES_NEO4J","DBSYSTEMVALUES_GEODE","DBSYSTEMVALUES_ELASTICSEARCH","DBSYSTEMVALUES_MEMCACHED","DBSYSTEMVALUES_COCKROACHDB","DbSystemValues","TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL","TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM","TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM","TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM","TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE","TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO","TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE","TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE","TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY","TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL","TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL","DBCASSANDRACONSISTENCYLEVELVALUES_ALL","DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM","DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM","DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM","DBCASSANDRACONSISTENCYLEVELVALUES_ONE","DBCASSANDRACONSISTENCYLEVELVALUES_TWO","DBCASSANDRACONSISTENCYLEVELVALUES_THREE","DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE","DBCASSANDRACONSISTENCYLEVELVALUES_ANY","DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL","DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL","DbCassandraConsistencyLevelValues","TMP_FAASTRIGGERVALUES_DATASOURCE","TMP_FAASTRIGGERVALUES_HTTP","TMP_FAASTRIGGERVALUES_PUBSUB","TMP_FAASTRIGGERVALUES_TIMER","TMP_FAASTRIGGERVALUES_OTHER","FAASTRIGGERVALUES_DATASOURCE","FAASTRIGGERVALUES_HTTP","FAASTRIGGERVALUES_PUBSUB","FAASTRIGGERVALUES_TIMER","FAASTRIGGERVALUES_OTHER","FaasTriggerValues","TMP_FAASDOCUMENTOPERATIONVALUES_INSERT","TMP_FAASDOCUMENTOPERATIONVALUES_EDIT","TMP_FAASDOCUMENTOPERATIONVALUES_DELETE","FAASDOCUMENTOPERATIONVALUES_INSERT","FAASDOCUMENTOPERATIONVALUES_EDIT","FAASDOCUMENTOPERATIONVALUES_DELETE","FaasDocumentOperationValues","TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD","TMP_FAASINVOKEDPROVIDERVALUES_AWS","TMP_FAASINVOKEDPROVIDERVALUES_AZURE","TMP_FAASINVOKEDPROVIDERVALUES_GCP","FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD","FAASINVOKEDPROVIDERVALUES_AWS","FAASINVOKEDPROVIDERVALUES_AZURE","FAASINVOKEDPROVIDERVALUES_GCP","FaasInvokedProviderValues","TMP_NETTRANSPORTVALUES_IP_TCP","TMP_NETTRANSPORTVALUES_IP_UDP","TMP_NETTRANSPORTVALUES_IP","TMP_NETTRANSPORTVALUES_UNIX","TMP_NETTRANSPORTVALUES_PIPE","TMP_NETTRANSPORTVALUES_INPROC","TMP_NETTRANSPORTVALUES_OTHER","NETTRANSPORTVALUES_IP_TCP","NETTRANSPORTVALUES_IP_UDP","NETTRANSPORTVALUES_IP","NETTRANSPORTVALUES_UNIX","NETTRANSPORTVALUES_PIPE","NETTRANSPORTVALUES_INPROC","NETTRANSPORTVALUES_OTHER","NetTransportValues","TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI","TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED","TMP_NETHOSTCONNECTIONTYPEVALUES_CELL","TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE","TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN","NETHOSTCONNECTIONTYPEVALUES_WIFI","NETHOSTCONNECTIONTYPEVALUES_WIRED","NETHOSTCONNECTIONTYPEVALUES_CELL","NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE","NETHOSTCONNECTIONTYPEVALUES_UNKNOWN","NetHostConnectionTypeValues","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA","TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA","NETHOSTCONNECTIONSUBTYPEVALUES_GPRS","NETHOSTCONNECTIONSUBTYPEVALUES_EDGE","NETHOSTCONNECTIONSUBTYPEVALUES_UMTS","NETHOSTCONNECTIONSUBTYPEVALUES_CDMA","NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0","NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A","NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT","NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA","NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA","NETHOSTCONNECTIONSUBTYPEVALUES_HSPA","NETHOSTCONNECTIONSUBTYPEVALUES_IDEN","NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B","NETHOSTCONNECTIONSUBTYPEVALUES_LTE","NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD","NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP","NETHOSTCONNECTIONSUBTYPEVALUES_GSM","NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA","NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN","NETHOSTCONNECTIONSUBTYPEVALUES_NR","NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA","NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA","NetHostConnectionSubtypeValues","TMP_HTTPFLAVORVALUES_HTTP_1_0","TMP_HTTPFLAVORVALUES_HTTP_1_1","TMP_HTTPFLAVORVALUES_HTTP_2_0","TMP_HTTPFLAVORVALUES_SPDY","TMP_HTTPFLAVORVALUES_QUIC","HTTPFLAVORVALUES_HTTP_1_0","HTTPFLAVORVALUES_HTTP_1_1","HTTPFLAVORVALUES_HTTP_2_0","HTTPFLAVORVALUES_SPDY","HTTPFLAVORVALUES_QUIC","HttpFlavorValues","TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE","TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC","MESSAGINGDESTINATIONKINDVALUES_QUEUE","MESSAGINGDESTINATIONKINDVALUES_TOPIC","MessagingDestinationKindValues","TMP_MESSAGINGOPERATIONVALUES_RECEIVE","TMP_MESSAGINGOPERATIONVALUES_PROCESS","MESSAGINGOPERATIONVALUES_RECEIVE","MESSAGINGOPERATIONVALUES_PROCESS","MessagingOperationValues","TMP_RPCGRPCSTATUSCODEVALUES_OK","TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED","TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN","TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT","TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED","TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND","TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS","TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED","TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED","TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION","TMP_RPCGRPCSTATUSCODEVALUES_ABORTED","TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE","TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED","TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL","TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE","TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS","TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED","RPCGRPCSTATUSCODEVALUES_OK","RPCGRPCSTATUSCODEVALUES_CANCELLED","RPCGRPCSTATUSCODEVALUES_UNKNOWN","RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT","RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED","RPCGRPCSTATUSCODEVALUES_NOT_FOUND","RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS","RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED","RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED","RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION","RPCGRPCSTATUSCODEVALUES_ABORTED","RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE","RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED","RPCGRPCSTATUSCODEVALUES_INTERNAL","RPCGRPCSTATUSCODEVALUES_UNAVAILABLE","RPCGRPCSTATUSCODEVALUES_DATA_LOSS","RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED","RpcGrpcStatusCodeValues","TMP_MESSAGETYPEVALUES_SENT","TMP_MESSAGETYPEVALUES_RECEIVED","MESSAGETYPEVALUES_SENT","MESSAGETYPEVALUES_RECEIVED","MessageTypeValues","TMP_CLOUD_PROVIDER","TMP_CLOUD_ACCOUNT_ID","TMP_CLOUD_REGION","TMP_CLOUD_AVAILABILITY_ZONE","TMP_CLOUD_PLATFORM","TMP_AWS_ECS_CONTAINER_ARN","TMP_AWS_ECS_CLUSTER_ARN","TMP_AWS_ECS_LAUNCHTYPE","TMP_AWS_ECS_TASK_ARN","TMP_AWS_ECS_TASK_FAMILY","TMP_AWS_ECS_TASK_REVISION","TMP_AWS_EKS_CLUSTER_ARN","TMP_AWS_LOG_GROUP_NAMES","TMP_AWS_LOG_GROUP_ARNS","TMP_AWS_LOG_STREAM_NAMES","TMP_AWS_LOG_STREAM_ARNS","TMP_CONTAINER_NAME","TMP_CONTAINER_ID","TMP_CONTAINER_RUNTIME","TMP_CONTAINER_IMAGE_NAME","TMP_CONTAINER_IMAGE_TAG","TMP_DEPLOYMENT_ENVIRONMENT","TMP_DEVICE_ID","TMP_DEVICE_MODEL_IDENTIFIER","TMP_DEVICE_MODEL_NAME","TMP_FAAS_NAME","TMP_FAAS_ID","TMP_FAAS_VERSION","TMP_FAAS_INSTANCE","TMP_FAAS_MAX_MEMORY","TMP_HOST_ID","TMP_HOST_NAME","TMP_HOST_TYPE","TMP_HOST_ARCH","TMP_HOST_IMAGE_NAME","TMP_HOST_IMAGE_ID","TMP_HOST_IMAGE_VERSION","TMP_K8S_CLUSTER_NAME","TMP_K8S_NODE_NAME","TMP_K8S_NODE_UID","TMP_K8S_NAMESPACE_NAME","TMP_K8S_POD_UID","TMP_K8S_POD_NAME","TMP_K8S_CONTAINER_NAME","TMP_K8S_REPLICASET_UID","TMP_K8S_REPLICASET_NAME","TMP_K8S_DEPLOYMENT_UID","TMP_K8S_DEPLOYMENT_NAME","TMP_K8S_STATEFULSET_UID","TMP_K8S_STATEFULSET_NAME","TMP_K8S_DAEMONSET_UID","TMP_K8S_DAEMONSET_NAME","TMP_K8S_JOB_UID","TMP_K8S_JOB_NAME","TMP_K8S_CRONJOB_UID","TMP_K8S_CRONJOB_NAME","TMP_OS_TYPE","TMP_OS_DESCRIPTION","TMP_OS_NAME","TMP_OS_VERSION","TMP_PROCESS_PID","TMP_PROCESS_EXECUTABLE_NAME","TMP_PROCESS_EXECUTABLE_PATH","TMP_PROCESS_COMMAND","TMP_PROCESS_COMMAND_LINE","TMP_PROCESS_COMMAND_ARGS","TMP_PROCESS_OWNER","TMP_PROCESS_RUNTIME_NAME","TMP_PROCESS_RUNTIME_VERSION","TMP_PROCESS_RUNTIME_DESCRIPTION","TMP_SERVICE_NAME","TMP_SERVICE_NAMESPACE","TMP_SERVICE_INSTANCE_ID","TMP_SERVICE_VERSION","TMP_TELEMETRY_SDK_NAME","TMP_TELEMETRY_SDK_LANGUAGE","TMP_TELEMETRY_SDK_VERSION","TMP_TELEMETRY_AUTO_VERSION","TMP_WEBENGINE_NAME","TMP_WEBENGINE_VERSION","TMP_WEBENGINE_DESCRIPTION","SEMRESATTRS_CLOUD_PROVIDER","SEMRESATTRS_CLOUD_ACCOUNT_ID","SEMRESATTRS_CLOUD_REGION","SEMRESATTRS_CLOUD_AVAILABILITY_ZONE","SEMRESATTRS_CLOUD_PLATFORM","SEMRESATTRS_AWS_ECS_CONTAINER_ARN","SEMRESATTRS_AWS_ECS_CLUSTER_ARN","SEMRESATTRS_AWS_ECS_LAUNCHTYPE","SEMRESATTRS_AWS_ECS_TASK_ARN","SEMRESATTRS_AWS_ECS_TASK_FAMILY","SEMRESATTRS_AWS_ECS_TASK_REVISION","SEMRESATTRS_AWS_EKS_CLUSTER_ARN","SEMRESATTRS_AWS_LOG_GROUP_NAMES","SEMRESATTRS_AWS_LOG_GROUP_ARNS","SEMRESATTRS_AWS_LOG_STREAM_NAMES","SEMRESATTRS_AWS_LOG_STREAM_ARNS","SEMRESATTRS_CONTAINER_NAME","SEMRESATTRS_CONTAINER_ID","SEMRESATTRS_CONTAINER_RUNTIME","SEMRESATTRS_CONTAINER_IMAGE_NAME","SEMRESATTRS_CONTAINER_IMAGE_TAG","SEMRESATTRS_DEPLOYMENT_ENVIRONMENT","SEMRESATTRS_DEVICE_ID","SEMRESATTRS_DEVICE_MODEL_IDENTIFIER","SEMRESATTRS_DEVICE_MODEL_NAME","SEMRESATTRS_FAAS_NAME","SEMRESATTRS_FAAS_ID","SEMRESATTRS_FAAS_VERSION","SEMRESATTRS_FAAS_INSTANCE","SEMRESATTRS_FAAS_MAX_MEMORY","SEMRESATTRS_HOST_ID","SEMRESATTRS_HOST_NAME","SEMRESATTRS_HOST_TYPE","SEMRESATTRS_HOST_ARCH","SEMRESATTRS_HOST_IMAGE_NAME","SEMRESATTRS_HOST_IMAGE_ID","SEMRESATTRS_HOST_IMAGE_VERSION","SEMRESATTRS_K8S_CLUSTER_NAME","SEMRESATTRS_K8S_NODE_NAME","SEMRESATTRS_K8S_NODE_UID","SEMRESATTRS_K8S_NAMESPACE_NAME","SEMRESATTRS_K8S_POD_UID","SEMRESATTRS_K8S_POD_NAME","SEMRESATTRS_K8S_CONTAINER_NAME","SEMRESATTRS_K8S_REPLICASET_UID","SEMRESATTRS_K8S_REPLICASET_NAME","SEMRESATTRS_K8S_DEPLOYMENT_UID","SEMRESATTRS_K8S_DEPLOYMENT_NAME","SEMRESATTRS_K8S_STATEFULSET_UID","SEMRESATTRS_K8S_STATEFULSET_NAME","SEMRESATTRS_K8S_DAEMONSET_UID","SEMRESATTRS_K8S_DAEMONSET_NAME","SEMRESATTRS_K8S_JOB_UID","SEMRESATTRS_K8S_JOB_NAME","SEMRESATTRS_K8S_CRONJOB_UID","SEMRESATTRS_K8S_CRONJOB_NAME","SEMRESATTRS_OS_TYPE","SEMRESATTRS_OS_DESCRIPTION","SEMRESATTRS_OS_NAME","SEMRESATTRS_OS_VERSION","SEMRESATTRS_PROCESS_PID","SEMRESATTRS_PROCESS_EXECUTABLE_NAME","SEMRESATTRS_PROCESS_EXECUTABLE_PATH","SEMRESATTRS_PROCESS_COMMAND","SEMRESATTRS_PROCESS_COMMAND_LINE","SEMRESATTRS_PROCESS_COMMAND_ARGS","SEMRESATTRS_PROCESS_OWNER","SEMRESATTRS_PROCESS_RUNTIME_NAME","SEMRESATTRS_PROCESS_RUNTIME_VERSION","SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION","SEMRESATTRS_SERVICE_NAME","SEMRESATTRS_SERVICE_NAMESPACE","SEMRESATTRS_SERVICE_INSTANCE_ID","SEMRESATTRS_SERVICE_VERSION","SEMRESATTRS_TELEMETRY_SDK_NAME","SEMRESATTRS_TELEMETRY_SDK_LANGUAGE","SEMRESATTRS_TELEMETRY_SDK_VERSION","SEMRESATTRS_TELEMETRY_AUTO_VERSION","SEMRESATTRS_WEBENGINE_NAME","SEMRESATTRS_WEBENGINE_VERSION","SEMRESATTRS_WEBENGINE_DESCRIPTION","SemanticResourceAttributes","TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD","TMP_CLOUDPROVIDERVALUES_AWS","TMP_CLOUDPROVIDERVALUES_AZURE","TMP_CLOUDPROVIDERVALUES_GCP","CLOUDPROVIDERVALUES_ALIBABA_CLOUD","CLOUDPROVIDERVALUES_AWS","CLOUDPROVIDERVALUES_AZURE","CLOUDPROVIDERVALUES_GCP","CloudProviderValues","TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS","TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC","TMP_CLOUDPLATFORMVALUES_AWS_EC2","TMP_CLOUDPLATFORMVALUES_AWS_ECS","TMP_CLOUDPLATFORMVALUES_AWS_EKS","TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA","TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK","TMP_CLOUDPLATFORMVALUES_AZURE_VM","TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES","TMP_CLOUDPLATFORMVALUES_AZURE_AKS","TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS","TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE","TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE","TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN","TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE","TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS","TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE","CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS","CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC","CLOUDPLATFORMVALUES_AWS_EC2","CLOUDPLATFORMVALUES_AWS_ECS","CLOUDPLATFORMVALUES_AWS_EKS","CLOUDPLATFORMVALUES_AWS_LAMBDA","CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK","CLOUDPLATFORMVALUES_AZURE_VM","CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES","CLOUDPLATFORMVALUES_AZURE_AKS","CLOUDPLATFORMVALUES_AZURE_FUNCTIONS","CLOUDPLATFORMVALUES_AZURE_APP_SERVICE","CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE","CLOUDPLATFORMVALUES_GCP_CLOUD_RUN","CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE","CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS","CLOUDPLATFORMVALUES_GCP_APP_ENGINE","CloudPlatformValues","TMP_AWSECSLAUNCHTYPEVALUES_EC2","TMP_AWSECSLAUNCHTYPEVALUES_FARGATE","AWSECSLAUNCHTYPEVALUES_EC2","AWSECSLAUNCHTYPEVALUES_FARGATE","AwsEcsLaunchtypeValues","TMP_HOSTARCHVALUES_AMD64","TMP_HOSTARCHVALUES_ARM32","TMP_HOSTARCHVALUES_ARM64","TMP_HOSTARCHVALUES_IA64","TMP_HOSTARCHVALUES_PPC32","TMP_HOSTARCHVALUES_PPC64","TMP_HOSTARCHVALUES_X86","HOSTARCHVALUES_AMD64","HOSTARCHVALUES_ARM32","HOSTARCHVALUES_ARM64","HOSTARCHVALUES_IA64","HOSTARCHVALUES_PPC32","HOSTARCHVALUES_PPC64","HOSTARCHVALUES_X86","HostArchValues","TMP_OSTYPEVALUES_WINDOWS","TMP_OSTYPEVALUES_LINUX","TMP_OSTYPEVALUES_DARWIN","TMP_OSTYPEVALUES_FREEBSD","TMP_OSTYPEVALUES_NETBSD","TMP_OSTYPEVALUES_OPENBSD","TMP_OSTYPEVALUES_DRAGONFLYBSD","TMP_OSTYPEVALUES_HPUX","TMP_OSTYPEVALUES_AIX","TMP_OSTYPEVALUES_SOLARIS","TMP_OSTYPEVALUES_Z_OS","OSTYPEVALUES_WINDOWS","OSTYPEVALUES_LINUX","OSTYPEVALUES_DARWIN","OSTYPEVALUES_FREEBSD","OSTYPEVALUES_NETBSD","OSTYPEVALUES_OPENBSD","OSTYPEVALUES_DRAGONFLYBSD","OSTYPEVALUES_HPUX","OSTYPEVALUES_AIX","OSTYPEVALUES_SOLARIS","OSTYPEVALUES_Z_OS","OsTypeValues","TMP_TELEMETRYSDKLANGUAGEVALUES_CPP","TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET","TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG","TMP_TELEMETRYSDKLANGUAGEVALUES_GO","TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA","TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS","TMP_TELEMETRYSDKLANGUAGEVALUES_PHP","TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON","TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY","TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS","TELEMETRYSDKLANGUAGEVALUES_CPP","TELEMETRYSDKLANGUAGEVALUES_DOTNET","TELEMETRYSDKLANGUAGEVALUES_ERLANG","TELEMETRYSDKLANGUAGEVALUES_GO","TELEMETRYSDKLANGUAGEVALUES_JAVA","TELEMETRYSDKLANGUAGEVALUES_NODEJS","TELEMETRYSDKLANGUAGEVALUES_PHP","TELEMETRYSDKLANGUAGEVALUES_PYTHON","TELEMETRYSDKLANGUAGEVALUES_RUBY","TELEMETRYSDKLANGUAGEVALUES_WEBJS","TelemetrySdkLanguageValues","ATTR_ASPNETCORE_RATE_LIMITING_RESULT","ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED","ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER","ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER","ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED","ATTR_TELEMETRY_SDK_LANGUAGE","TELEMETRY_SDK_LANGUAGE_VALUE_CPP","TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET","TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG","TELEMETRY_SDK_LANGUAGE_VALUE_GO","TELEMETRY_SDK_LANGUAGE_VALUE_JAVA","TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS","TELEMETRY_SDK_LANGUAGE_VALUE_PHP","TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON","TELEMETRY_SDK_LANGUAGE_VALUE_RUBY","TELEMETRY_SDK_LANGUAGE_VALUE_RUST","TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT","TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS","ATTR_TELEMETRY_SDK_NAME","ATTR_TELEMETRY_SDK_VERSION","ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE","ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT","ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED","ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED","ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED","ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED","ATTR_ASPNETCORE_RATE_LIMITING_POLICY","ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED","ATTR_ASPNETCORE_ROUTING_IS_FALLBACK","ATTR_ASPNETCORE_ROUTING_MATCH_STATUS","ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE","ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS","ATTR_CLIENT_ADDRESS","ATTR_CLIENT_PORT","ATTR_ERROR_TYPE","ERROR_TYPE_VALUE_OTHER","ATTR_EXCEPTION_ESCAPED","ATTR_EXCEPTION_MESSAGE","ATTR_EXCEPTION_STACKTRACE","ATTR_EXCEPTION_TYPE","ATTR_HTTP_REQUEST_HEADER","ATTR_HTTP_REQUEST_METHOD","HTTP_REQUEST_METHOD_VALUE_OTHER","HTTP_REQUEST_METHOD_VALUE_CONNECT","HTTP_REQUEST_METHOD_VALUE_DELETE","HTTP_REQUEST_METHOD_VALUE_GET","HTTP_REQUEST_METHOD_VALUE_HEAD","HTTP_REQUEST_METHOD_VALUE_OPTIONS","HTTP_REQUEST_METHOD_VALUE_PATCH","HTTP_REQUEST_METHOD_VALUE_POST","HTTP_REQUEST_METHOD_VALUE_PUT","HTTP_REQUEST_METHOD_VALUE_TRACE","ATTR_HTTP_REQUEST_METHOD_ORIGINAL","ATTR_HTTP_REQUEST_RESEND_COUNT","ATTR_HTTP_RESPONSE_HEADER","ATTR_HTTP_RESPONSE_STATUS_CODE","ATTR_HTTP_ROUTE","ATTR_JVM_GC_ACTION","ATTR_JVM_GC_NAME","ATTR_JVM_MEMORY_POOL_NAME","ATTR_JVM_MEMORY_TYPE","JVM_MEMORY_TYPE_VALUE_HEAP","JVM_MEMORY_TYPE_VALUE_NON_HEAP","ATTR_JVM_THREAD_DAEMON","ATTR_JVM_THREAD_STATE","JVM_THREAD_STATE_VALUE_BLOCKED","JVM_THREAD_STATE_VALUE_NEW","JVM_THREAD_STATE_VALUE_RUNNABLE","JVM_THREAD_STATE_VALUE_TERMINATED","JVM_THREAD_STATE_VALUE_TIMED_WAITING","JVM_THREAD_STATE_VALUE_WAITING","ATTR_NETWORK_LOCAL_ADDRESS","ATTR_NETWORK_LOCAL_PORT","ATTR_NETWORK_PEER_ADDRESS","ATTR_NETWORK_PEER_PORT","ATTR_NETWORK_PROTOCOL_NAME","ATTR_NETWORK_PROTOCOL_VERSION","ATTR_NETWORK_TRANSPORT","NETWORK_TRANSPORT_VALUE_PIPE","NETWORK_TRANSPORT_VALUE_QUIC","NETWORK_TRANSPORT_VALUE_TCP","NETWORK_TRANSPORT_VALUE_UDP","NETWORK_TRANSPORT_VALUE_UNIX","ATTR_NETWORK_TYPE","NETWORK_TYPE_VALUE_IPV4","NETWORK_TYPE_VALUE_IPV6","ATTR_OTEL_SCOPE_NAME","ATTR_OTEL_SCOPE_VERSION","ATTR_OTEL_STATUS_CODE","OTEL_STATUS_CODE_VALUE_ERROR","OTEL_STATUS_CODE_VALUE_OK","ATTR_OTEL_STATUS_DESCRIPTION","ATTR_SERVER_ADDRESS","ATTR_SERVER_PORT","ATTR_SERVICE_NAME","ATTR_SERVICE_VERSION","ATTR_SIGNALR_CONNECTION_STATUS","SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN","SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE","SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT","ATTR_SIGNALR_TRANSPORT","SIGNALR_TRANSPORT_VALUE_LONG_POLLING","SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS","SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS","ATTR_URL_FRAGMENT","ATTR_URL_FULL","ATTR_URL_PATH","ATTR_URL_QUERY","ATTR_URL_SCHEME","ATTR_USER_AGENT_ORIGINAL","METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS","METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES","METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS","METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE","METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION","METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS","METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS","METRIC_HTTP_CLIENT_REQUEST_DURATION","METRIC_HTTP_SERVER_REQUEST_DURATION","METRIC_JVM_CLASS_COUNT","METRIC_JVM_CLASS_LOADED","METRIC_JVM_CLASS_UNLOADED","METRIC_JVM_CPU_COUNT","METRIC_JVM_CPU_RECENT_UTILIZATION","METRIC_JVM_CPU_TIME","METRIC_JVM_GC_DURATION","METRIC_JVM_MEMORY_COMMITTED","METRIC_JVM_MEMORY_LIMIT","METRIC_JVM_MEMORY_USED","METRIC_JVM_MEMORY_USED_AFTER_LAST_GC","METRIC_JVM_THREAD_COUNT","METRIC_KESTREL_ACTIVE_CONNECTIONS","METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES","METRIC_KESTREL_CONNECTION_DURATION","METRIC_KESTREL_QUEUED_CONNECTIONS","METRIC_KESTREL_QUEUED_REQUESTS","METRIC_KESTREL_REJECTED_CONNECTIONS","METRIC_KESTREL_TLS_HANDSHAKE_DURATION","METRIC_KESTREL_UPGRADED_CONNECTIONS","METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS","METRIC_SIGNALR_SERVER_CONNECTION_DURATION","api_1","core_1","semantic_conventions_1","Span","context","Sampler_1","Sampler_1","api_1","core_1","AlwaysOffSampler_1","AlwaysOnSampler_1","context","api_1","Sampler_1","api_1","core_1","AlwaysOffSampler_1","AlwaysOnSampler_1","ParentBasedSampler_1","TraceIdRatioBasedSampler_1","config_1","core_1","api_1","core_1","BatchSpanProcessor","node_1","core_1","Span_1","utility_1","platform_1","context","ATTR_SERVICE_NAME","node_1","api_1","semantic_conventions_1","core_1","platform_1","Resource","_a","child_process","execAsync_1","api_1","getMachineId","fs_1","api_1","getMachineId","path","execAsync_1","api_1","getMachineId","process","api_1","getMachineId","api_1","getMachineId","process","semantic_conventions_1","Resource_1","os_1","utils_1","HostDetectorSync_1","semantic_conventions_1","Resource_1","utils_1","OSDetectorSync_1","api_1","semantic_conventions_1","Resource_1","os","ProcessDetectorSync_1","semantic_conventions_1","Resource_1","semantic_conventions_1","api_1","Resource_1","BrowserDetectorSync_1","api_1","core_1","Resource_1","EnvDetectorSync_1","platform_1","Resource_1","api_1","_a","platform_1","core_1","context","api_1","core_1","Tracer_1","NoopSpanProcessor_1","platform_1","version","core_1","core_1","api_1","core_1","_a","context","sdk_trace_base_1","semver","NodeTracerProvider","MessageType$2","MessageType","UnknownFieldHandler","WireType","ServiceType","context","MessageType","sdkMessage: SDKMessage","connectionConfig: any","error: any","envVars: Record<string, string>","cleaned: any","NodeTracerProvider","Resource","BatchSpanProcessor","connectionInfo: { socketPath: string } | { host: string; port: number }","trace","TuskDrift: TuskDriftPublicAPI"],"sources":["../src/nextjs/utils.ts","../src/nextjs/withTuskDrift.ts","../src/instrumentation/core/baseClasses/TdInstrumentationAbstract.ts","../src/core/utils/dataNormalizationUtils.ts","../src/core/utils/samplingUtils.ts","../node_modules/@protobuf-ts/runtime/build/commonjs/json-typings.js","../node_modules/@protobuf-ts/runtime/build/commonjs/base64.js","../node_modules/@protobuf-ts/runtime/build/commonjs/protobufjs-utf8.js","../node_modules/@protobuf-ts/runtime/build/commonjs/binary-format-contract.js","../node_modules/@protobuf-ts/runtime/build/commonjs/goog-varint.js","../node_modules/@protobuf-ts/runtime/build/commonjs/pb-long.js","../node_modules/@protobuf-ts/runtime/build/commonjs/binary-reader.js","../node_modules/@protobuf-ts/runtime/build/commonjs/assert.js","../node_modules/@protobuf-ts/runtime/build/commonjs/binary-writer.js","../node_modules/@protobuf-ts/runtime/build/commonjs/json-format-contract.js","../node_modules/@protobuf-ts/runtime/build/commonjs/message-type-contract.js","../node_modules/@protobuf-ts/runtime/build/commonjs/lower-camel-case.js","../node_modules/@protobuf-ts/runtime/build/commonjs/reflection-info.js","../node_modules/@protobuf-ts/runtime/build/commonjs/oneof.js","../node_modules/@protobuf-ts/runtime/build/commonjs/reflection-type-check.js","../node_modules/@protobuf-ts/runtime/build/commonjs/reflection-long-convert.js","../node_modules/@protobuf-ts/runtime/build/commonjs/reflection-json-reader.js","../node_modules/@protobuf-ts/runtime/build/commonjs/reflection-json-writer.js","../node_modules/@protobuf-ts/runtime/build/commonjs/reflection-scalar-default.js","../node_modules/@protobuf-ts/runtime/build/commonjs/reflection-binary-reader.js","../node_modules/@protobuf-ts/runtime/build/commonjs/reflection-binary-writer.js","../node_modules/@protobuf-ts/runtime/build/commonjs/reflection-create.js","../node_modules/@protobuf-ts/runtime/build/commonjs/reflection-merge-partial.js","../node_modules/@protobuf-ts/runtime/build/commonjs/reflection-equals.js","../node_modules/@protobuf-ts/runtime/build/commonjs/message-type.js","../node_modules/@protobuf-ts/runtime/build/commonjs/reflection-contains-message-type.js","../node_modules/@protobuf-ts/runtime/build/commonjs/enum-object.js","../node_modules/@protobuf-ts/runtime/build/commonjs/index.js","../node_modules/@use-tusk/drift-schemas/dist/struct-LJz5_MGH.js","../node_modules/@opentelemetry/api/build/src/platform/node/globalThis.js","../node_modules/@opentelemetry/api/build/src/platform/node/index.js","../node_modules/@opentelemetry/api/build/src/platform/index.js","../node_modules/@opentelemetry/api/build/src/version.js","../node_modules/@opentelemetry/api/build/src/internal/semver.js","../node_modules/@opentelemetry/api/build/src/internal/global-utils.js","../node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.js","../node_modules/@opentelemetry/api/build/src/diag/types.js","../node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.js","../node_modules/@opentelemetry/api/build/src/api/diag.js","../node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.js","../node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.js","../node_modules/@opentelemetry/api/build/src/baggage/utils.js","../node_modules/@opentelemetry/api/build/src/context/context.js","../node_modules/@opentelemetry/api/build/src/diag/consoleLogger.js","../node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.js","../node_modules/@opentelemetry/api/build/src/metrics/Metric.js","../node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.js","../node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js","../node_modules/@opentelemetry/api/build/src/api/context.js","../node_modules/@opentelemetry/api/build/src/trace/trace_flags.js","../node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.js","../node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.js","../node_modules/@opentelemetry/api/build/src/trace/context-utils.js","../node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.js","../node_modules/@opentelemetry/api/build/src/trace/NoopTracer.js","../node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.js","../node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.js","../node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.js","../node_modules/@opentelemetry/api/build/src/trace/SamplingResult.js","../node_modules/@opentelemetry/api/build/src/trace/span_kind.js","../node_modules/@opentelemetry/api/build/src/trace/status.js","../node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.js","../node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js","../node_modules/@opentelemetry/api/build/src/trace/internal/utils.js","../node_modules/@opentelemetry/api/build/src/context-api.js","../node_modules/@opentelemetry/api/build/src/diag-api.js","../node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.js","../node_modules/@opentelemetry/api/build/src/api/metrics.js","../node_modules/@opentelemetry/api/build/src/metrics-api.js","../node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.js","../node_modules/@opentelemetry/api/build/src/baggage/context-helpers.js","../node_modules/@opentelemetry/api/build/src/api/propagation.js","../node_modules/@opentelemetry/api/build/src/propagation-api.js","../node_modules/@opentelemetry/api/build/src/api/trace.js","../node_modules/@opentelemetry/api/build/src/trace-api.js","../node_modules/@opentelemetry/api/build/src/index.js","../node_modules/@use-tusk/drift-schemas/dist/duration-B3fwb4jB.js","../node_modules/@use-tusk/drift-schemas/dist/timestamp-CN7C70ih.js","../node_modules/@use-tusk/drift-schemas/dist/json_schema-DhnvfM2m.js","../node_modules/@use-tusk/drift-schemas/dist/span-BZ89ct3l.js","../src/core/utils/protobufUtils.ts","../src/core/utils/OriginalGlobalUtils.ts","../src/core/utils/configUtils.ts","../src/core/utils/runtimeDetectionUtils.ts","../src/core/utils/logger.ts","../src/core/analytics/analyticsUtils.ts","../src/instrumentation/core/baseClasses/TdInstrumentationBase.ts","../src/instrumentation/core/baseClasses/TdInstrumentationNodeModule.ts","../src/core/types.ts","../src/core/tracing/TraceBlockingManager.ts","../src/core/tracing/SpanUtils.ts","../src/instrumentation/libraries/http/utils/bodyDecompression.ts","../src/instrumentation/libraries/http/utils/binaryDataHandler.ts","../src/instrumentation/libraries/http/utils/httpBodyEncoder.ts","../src/instrumentation/libraries/http/mocks/TdHttpMockSocket.ts","../src/instrumentation/core/trackers/EnvVarTracker.ts","../src/instrumentation/core/trackers/DateTracker.ts","../src/core/tracing/JsonSchemaHelper.ts","../src/instrumentation/core/utils/mockResponseUtils.ts","../src/instrumentation/libraries/http/mocks/TdMockClientRequest.ts","../src/instrumentation/libraries/http/HttpReplayHooks.ts","../src/instrumentation/core/utils/modeUtils.ts","../node_modules/@protobuf-ts/runtime-rpc/build/commonjs/reflection-info.js","../node_modules/@protobuf-ts/runtime-rpc/build/commonjs/service-type.js","../node_modules/@protobuf-ts/runtime-rpc/build/commonjs/rpc-error.js","../node_modules/@protobuf-ts/runtime-rpc/build/commonjs/rpc-options.js","../node_modules/@protobuf-ts/runtime-rpc/build/commonjs/deferred.js","../node_modules/@protobuf-ts/runtime-rpc/build/commonjs/rpc-output-stream.js","../node_modules/@protobuf-ts/runtime-rpc/build/commonjs/unary-call.js","../node_modules/@protobuf-ts/runtime-rpc/build/commonjs/server-streaming-call.js","../node_modules/@protobuf-ts/runtime-rpc/build/commonjs/client-streaming-call.js","../node_modules/@protobuf-ts/runtime-rpc/build/commonjs/duplex-streaming-call.js","../node_modules/@protobuf-ts/runtime-rpc/build/commonjs/test-transport.js","../node_modules/@protobuf-ts/runtime-rpc/build/commonjs/rpc-interceptor.js","../node_modules/@protobuf-ts/runtime-rpc/build/commonjs/server-call-context.js","../node_modules/@protobuf-ts/runtime-rpc/build/commonjs/index.js","../node_modules/@use-tusk/drift-schemas/dist/span_export_service-XwF6hpEK.js","../src/instrumentation/core/utils/selfExclusion.ts","../src/instrumentation/core/utils/shimmerUtils.ts","../src/instrumentation/core/utils/stackTraceUtils.ts","../src/instrumentation/libraries/http/HttpTransformEngine.ts","../src/instrumentation/libraries/http/Instrumentation.ts","../src/instrumentation/libraries/env/Instrumentation.ts","../src/instrumentation/libraries/date/Instrumentation.ts","../src/instrumentation/core/baseClasses/TdInstrumentationNodeModuleFile.ts","../src/instrumentation/libraries/graphql/utils.ts","../src/instrumentation/libraries/graphql/Instrumentation.ts","../src/instrumentation/libraries/pg/mocks/TdPgClientMock.ts","../src/instrumentation/libraries/pg/Instrumentation.ts","../src/instrumentation/libraries/postgres/types.ts","../src/instrumentation/libraries/postgres/Instrumentation.ts","../src/instrumentation/libraries/mysql2/mocks/TdMysql2ConnectionMock.ts","../src/instrumentation/libraries/mysql2/mocks/TdMysql2QueryMock.ts","../src/instrumentation/libraries/mysql2/mocks/TdMysql2ConnectionEventMock.ts","../src/instrumentation/libraries/mysql2/Instrumentation.ts","../src/instrumentation/libraries/tcp/Instrumentation.ts","../src/instrumentation/libraries/jsonwebtoken/Instrumentation.ts","../src/instrumentation/libraries/jwks-rsa/Instrumentation.ts","../src/instrumentation/libraries/fetch/FetchTransformEngine.ts","../src/instrumentation/libraries/fetch/Instrumentation.ts","../src/instrumentation/libraries/ioredis/types.ts","../src/instrumentation/libraries/ioredis/utils.ts","../src/instrumentation/libraries/ioredis/Instrumentation.ts","../src/instrumentation/libraries/upstash-redis-js/Instrumentation.ts","../src/instrumentation/libraries/grpc/utils.ts","../src/instrumentation/libraries/grpc/Instrumentation.ts","../src/instrumentation/libraries/firestore/mocks/TdFirestoreDocumentMock.ts","../src/instrumentation/libraries/firestore/mocks/TdFirestoreQueryMock.ts","../src/instrumentation/libraries/firestore/mocks/TdFirestoreWriteResultMock.ts","../src/instrumentation/libraries/firestore/Instrumentation.ts","../src/instrumentation/libraries/nextjs/Instrumentation.ts","../src/instrumentation/libraries/prisma/types.ts","../src/instrumentation/libraries/prisma/Instrumentation.ts","../node_modules/@opentelemetry/core/build/src/trace/suppress-tracing.js","../node_modules/@opentelemetry/core/build/src/baggage/constants.js","../node_modules/@opentelemetry/core/build/src/baggage/utils.js","../node_modules/@opentelemetry/core/build/src/baggage/propagation/W3CBaggagePropagator.js","../node_modules/@opentelemetry/core/build/src/common/anchored-clock.js","../node_modules/@opentelemetry/core/build/src/common/attributes.js","../node_modules/@opentelemetry/core/build/src/common/logging-error-handler.js","../node_modules/@opentelemetry/core/build/src/common/global-error-handler.js","../node_modules/@opentelemetry/core/build/src/utils/sampling.js","../node_modules/@opentelemetry/core/build/src/utils/environment.js","../node_modules/@opentelemetry/core/build/src/platform/node/environment.js","../node_modules/@opentelemetry/core/build/src/platform/node/globalThis.js","../node_modules/@opentelemetry/core/build/src/common/hex-to-binary.js","../node_modules/@opentelemetry/core/build/src/platform/node/hex-to-base64.js","../node_modules/@opentelemetry/core/build/src/platform/node/RandomIdGenerator.js","../node_modules/@opentelemetry/core/build/src/platform/node/performance.js","../node_modules/@opentelemetry/core/build/src/version.js","../node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions/build/esm/internal/utils.js","../node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/SemanticAttributes.js","../node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/index.js","../node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/SemanticResourceAttributes.js","../node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/index.js","../node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js","../node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_metrics.js","../node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions/build/esm/index.js","../node_modules/@opentelemetry/core/build/src/platform/node/sdk-info.js","../node_modules/@opentelemetry/core/build/src/platform/node/timer-util.js","../node_modules/@opentelemetry/core/build/src/platform/node/index.js","../node_modules/@opentelemetry/core/build/src/platform/index.js","../node_modules/@opentelemetry/core/build/src/common/time.js","../node_modules/@opentelemetry/core/build/src/ExportResult.js","../node_modules/@opentelemetry/core/build/src/propagation/composite.js","../node_modules/@opentelemetry/core/build/src/internal/validators.js","../node_modules/@opentelemetry/core/build/src/trace/TraceState.js","../node_modules/@opentelemetry/core/build/src/trace/W3CTraceContextPropagator.js","../node_modules/@opentelemetry/core/build/src/trace/rpc-metadata.js","../node_modules/@opentelemetry/core/build/src/trace/sampler/AlwaysOffSampler.js","../node_modules/@opentelemetry/core/build/src/trace/sampler/AlwaysOnSampler.js","../node_modules/@opentelemetry/core/build/src/trace/sampler/ParentBasedSampler.js","../node_modules/@opentelemetry/core/build/src/trace/sampler/TraceIdRatioBasedSampler.js","../node_modules/@opentelemetry/core/build/src/utils/lodash.merge.js","../node_modules/@opentelemetry/core/build/src/utils/merge.js","../node_modules/@opentelemetry/core/build/src/utils/timeout.js","../node_modules/@opentelemetry/core/build/src/utils/url.js","../node_modules/@opentelemetry/core/build/src/utils/wrap.js","../node_modules/@opentelemetry/core/build/src/utils/promise.js","../node_modules/@opentelemetry/core/build/src/utils/callback.js","../node_modules/@opentelemetry/core/build/src/internal/exporter.js","../node_modules/@opentelemetry/core/build/src/index.js","../src/core/tracing/SpanTransformer.ts","../src/core/tracing/adapters/FilesystemSpanAdapter.ts","../node_modules/@use-tusk/drift-schemas/dist/backend/span_export_service.client.js","../node_modules/@protobuf-ts/twirp-transport/build/commonjs/twitch-twirp-error-code.js","../node_modules/@protobuf-ts/twirp-transport/build/commonjs/twirp-format.js","../node_modules/@protobuf-ts/twirp-transport/build/commonjs/twirp-transport.js","../node_modules/@protobuf-ts/twirp-transport/build/commonjs/index.js","../src/core/tracing/adapters/ApiSpanAdapter.ts","../src/core/tracing/TdSpanExporter.ts","../node_modules/@opentelemetry/context-async-hooks/build/src/AbstractAsyncHooksContextManager.js","../node_modules/@opentelemetry/context-async-hooks/build/src/AsyncHooksContextManager.js","../node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js","../node_modules/@opentelemetry/context-async-hooks/build/src/index.js","../node_modules/@opentelemetry/propagator-b3/build/src/common.js","../node_modules/@opentelemetry/propagator-b3/build/src/constants.js","../node_modules/@opentelemetry/propagator-b3/build/src/B3MultiPropagator.js","../node_modules/@opentelemetry/propagator-b3/build/src/B3SinglePropagator.js","../node_modules/@opentelemetry/propagator-b3/build/src/types.js","../node_modules/@opentelemetry/propagator-b3/build/src/B3Propagator.js","../node_modules/@opentelemetry/propagator-b3/build/src/index.js","../node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions/build/esm/internal/utils.js","../node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/SemanticAttributes.js","../node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/index.js","../node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/SemanticResourceAttributes.js","../node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/index.js","../node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js","../node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_metrics.js","../node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions/build/esm/index.js","../node_modules/@opentelemetry/sdk-trace-base/build/src/enums.js","../node_modules/@opentelemetry/sdk-trace-base/build/src/Span.js","../node_modules/@opentelemetry/sdk-trace-base/build/src/Sampler.js","../node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOffSampler.js","../node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOnSampler.js","../node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/ParentBasedSampler.js","../node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/TraceIdRatioBasedSampler.js","../node_modules/@opentelemetry/sdk-trace-base/build/src/config.js","../node_modules/@opentelemetry/sdk-trace-base/build/src/utility.js","../node_modules/@opentelemetry/sdk-trace-base/build/src/export/BatchSpanProcessorBase.js","../node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/export/BatchSpanProcessor.js","../node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/RandomIdGenerator.js","../node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/index.js","../node_modules/@opentelemetry/sdk-trace-base/build/src/platform/index.js","../node_modules/@opentelemetry/sdk-trace-base/build/src/Tracer.js","../node_modules/@opentelemetry/resources/node_modules/@opentelemetry/semantic-conventions/build/esm/internal/utils.js","../node_modules/@opentelemetry/resources/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/SemanticAttributes.js","../node_modules/@opentelemetry/resources/node_modules/@opentelemetry/semantic-conventions/build/esm/trace/index.js","../node_modules/@opentelemetry/resources/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/SemanticResourceAttributes.js","../node_modules/@opentelemetry/resources/node_modules/@opentelemetry/semantic-conventions/build/esm/resource/index.js","../node_modules/@opentelemetry/resources/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js","../node_modules/@opentelemetry/resources/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_metrics.js","../node_modules/@opentelemetry/resources/node_modules/@opentelemetry/semantic-conventions/build/esm/index.js","../node_modules/@opentelemetry/resources/build/src/platform/node/default-service-name.js","../node_modules/@opentelemetry/resources/build/src/platform/node/index.js","../node_modules/@opentelemetry/resources/build/src/platform/index.js","../node_modules/@opentelemetry/resources/build/src/Resource.js","../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/utils.js","../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/execAsync.js","../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-darwin.js","../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-linux.js","../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-bsd.js","../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-win.js","../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-unsupported.js","../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId.js","../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/HostDetectorSync.js","../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/HostDetector.js","../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/OSDetectorSync.js","../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/OSDetector.js","../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ProcessDetectorSync.js","../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ProcessDetector.js","../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ServiceInstanceIdDetectorSync.js","../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/index.js","../node_modules/@opentelemetry/resources/build/src/detectors/platform/index.js","../node_modules/@opentelemetry/resources/build/src/detectors/BrowserDetectorSync.js","../node_modules/@opentelemetry/resources/build/src/detectors/BrowserDetector.js","../node_modules/@opentelemetry/resources/build/src/detectors/EnvDetectorSync.js","../node_modules/@opentelemetry/resources/build/src/detectors/EnvDetector.js","../node_modules/@opentelemetry/resources/build/src/detectors/index.js","../node_modules/@opentelemetry/resources/build/src/utils.js","../node_modules/@opentelemetry/resources/build/src/detect-resources.js","../node_modules/@opentelemetry/resources/build/src/index.js","../node_modules/@opentelemetry/sdk-trace-base/build/src/MultiSpanProcessor.js","../node_modules/@opentelemetry/sdk-trace-base/build/src/export/NoopSpanProcessor.js","../node_modules/@opentelemetry/sdk-trace-base/build/src/BasicTracerProvider.js","../node_modules/@opentelemetry/sdk-trace-base/build/src/export/ConsoleSpanExporter.js","../node_modules/@opentelemetry/sdk-trace-base/build/src/export/InMemorySpanExporter.js","../node_modules/@opentelemetry/sdk-trace-base/build/src/export/SimpleSpanProcessor.js","../node_modules/@opentelemetry/sdk-trace-base/build/src/index.js","../node_modules/@opentelemetry/propagator-jaeger/build/src/JaegerPropagator.js","../node_modules/@opentelemetry/propagator-jaeger/build/src/index.js","../node_modules/@opentelemetry/sdk-trace-node/build/src/NodeTracerProvider.js","../node_modules/@opentelemetry/sdk-trace-node/build/src/index.js","../package.json","../src/version.ts","../node_modules/@use-tusk/drift-schemas/dist/communication-D4zqMBSI.js","../src/core/ProtobufCommunicator.ts","../src/core/TuskDriftInstrumentationModuleNames.ts","../node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js","../src/core/TuskDrift.ts"],"sourcesContent":["import * as fs from \"fs\";\nimport * as path from \"path\";\nimport { parse as parseSemver } from \"semver\";\nimport type { ParsedVersion } from \"./types\";\n\n/**\n * Get the installed Next.js version by reading package.json from node_modules.\n *\n * @returns The Next.js version string, or undefined if not found\n */\nexport function getNextjsVersion(): string | undefined {\n  try {\n    // Try to read from node_modules/next/package.json\n    const nextPackageJsonPath = path.join(process.cwd(), \"node_modules\", \"next\", \"package.json\");\n\n    if (fs.existsSync(nextPackageJsonPath)) {\n      const packageJson = JSON.parse(fs.readFileSync(nextPackageJsonPath, \"utf-8\"));\n      return packageJson.version;\n    }\n  } catch (error) {\n    // Silent failure - we'll warn the user in the main function\n  }\n\n  return undefined;\n}\n\n/**\n * Parse a semantic version string into its components.\n *\n * @param version - The version string to parse (e.g., \"15.0.0-canary.124\")\n * @returns Parsed version object with major, minor, patch, and prerelease\n */\nexport function parseVersion(version: string): ParsedVersion {\n  try {\n    const parsed = parseSemver(version);\n\n    if (!parsed) {\n      return {\n        major: undefined,\n        minor: undefined,\n        patch: undefined,\n        prerelease: undefined,\n      };\n    }\n\n    return {\n      major: parsed.major,\n      minor: parsed.minor,\n      patch: parsed.patch,\n      prerelease: parsed.prerelease.length > 0 ? parsed.prerelease.join(\".\") : undefined,\n    };\n  } catch {\n    return {\n      major: undefined,\n      minor: undefined,\n      patch: undefined,\n      prerelease: undefined,\n    };\n  }\n}\n\n/**\n * Check if the Next.js version requires the instrumentationHook to be set.\n * From Next.js 15.0.0-rc.1 onwards, the instrumentationHook is no longer needed\n * and Next.js will warn if it's set.\n *\n * @param version - The Next.js version string\n * @returns true if instrumentationHook should be set, false otherwise\n */\nexport function shouldSetInstrumentationHook(version: string | undefined): boolean {\n  if (!version) {\n    // If we can't detect the version, err on the side of setting it\n    // (better to have a warning than broken instrumentation)\n    return true;\n  }\n\n  const { major, minor, patch, prerelease } = parseVersion(version);\n\n  // Unable to parse version\n  if (major === undefined || minor === undefined || patch === undefined) {\n    return true;\n  }\n\n  // Next.js 16+ definitely doesn't need it\n  if (major >= 16) {\n    return false;\n  }\n\n  // Next.js 14 and below need it\n  if (major < 15) {\n    return true;\n  }\n\n  // Next.js 15.x.x - check specific versions\n  if (major === 15) {\n    // 15.0.0 stable and higher don't need it\n    if (minor > 0 || patch > 0) {\n      return false;\n    }\n\n    // Check if it's 15.0.0 with no prerelease (stable)\n    if (minor === 0 && patch === 0 && prerelease === undefined) {\n      return false;\n    }\n\n    // Check for RC versions (rc.1 and higher don't need it)\n    if (prerelease?.startsWith(\"rc.\")) {\n      const rcNumber = parseInt(prerelease.split(\".\")[1] || \"0\", 10);\n      if (rcNumber >= 1) {\n        return false;\n      }\n    }\n\n    // Check for canary versions (canary.124 and higher don't need it)\n    if (prerelease?.startsWith(\"canary.\")) {\n      const canaryNumber = parseInt(prerelease.split(\".\")[1] || \"0\", 10);\n      if (canaryNumber >= 124) {\n        return false;\n      }\n    }\n\n    // All other 15.0.0 prereleases need it\n    return true;\n  }\n\n  // Default to true for safety\n  return true;\n}\n\n/**\n * Log a message if debug mode is enabled.\n *\n * @param debug - Whether debug mode is enabled\n * @param message - The message to log\n */\nexport function debugLog(debug: boolean, message: string): void {\n  if (debug) {\n    // eslint-disable-next-line no-console\n    console.log(`[Tusk Drift] ${message}`);\n  }\n}\n\n/**\n * Log a warning message if warnings are not suppressed.\n *\n * @param suppress - Whether to suppress the warning\n * @param message - The warning message to log\n */\nexport function warn(suppress: boolean, message: string): void {\n  if (!suppress) {\n    // eslint-disable-next-line no-console\n    console.warn(`[Tusk Drift] ${message}`);\n  }\n}\n","import type { NextConfig } from \"next\";\nimport type { TuskDriftNextOptions } from \"./types\";\nimport { getNextjsVersion, shouldSetInstrumentationHook, debugLog, warn } from \"./utils\";\n\n/**\n * Wraps your Next.js configuration with Tusk Drift instrumentation setup.\n *\n * This function automatically configures Next.js to work with Tusk Drift by:\n * - Enabling the Next.js instrumentation hook (for Next.js < 15.0.0-rc.1)\n * - Configuring webpack externals to prevent bundling of core instrumentation packages\n * - Preserving your existing Next.js configuration and webpack customizations\n *\n * @param nextConfig - Your existing Next.js configuration object (optional)\n * @param options - Additional options to configure Tusk Drift's behavior (optional)\n * @returns The wrapped Next.js configuration with Tusk Drift instrumentation enabled\n *\n * @example\n * Basic usage:\n * ```javascript\n * // next.config.js\n * const { withTuskDrift } = require('@use-tusk/drift-node-sdk');\n *\n * module.exports = withTuskDrift({\n *   // Your Next.js config\n * });\n * ```\n *\n * @example\n * With debug logging:\n * ```javascript\n * // next.config.js\n * const { withTuskDrift } = require('@use-tusk/drift-node-sdk');\n *\n * module.exports = withTuskDrift(\n *   {\n *     // Your Next.js config\n *   },\n *   {\n *     debug: true,\n *   }\n * );\n * ```\n *\n * @remarks\n * The following webpack externals are added for server-side builds:\n * - `require-in-the-middle` - Required for CommonJS module interception\n * - `jsonpath` - Required for schema manipulation\n */\nexport function withTuskDrift(\n  nextConfig: NextConfig = {},\n  options: TuskDriftNextOptions = {},\n): NextConfig {\n  const config = nextConfig;\n\n  const debug = options.debug || false;\n  const suppressAllWarnings = options.suppressWarnings || false;\n\n  // Detect Next.js version\n  const nextjsVersion = getNextjsVersion();\n\n  if (nextjsVersion) {\n    debugLog(debug, `Detected Next.js version: ${nextjsVersion}`);\n  } else {\n    warn(\n      suppressAllWarnings || false,\n      \"Could not detect Next.js version. Some features may not work correctly. \" +\n        \"If you encounter issues, please ensure Next.js is properly installed.\",\n    );\n  }\n\n  // Determine if we should set instrumentationHook\n  const needsInstrumentationHook =\n    !options.disableInstrumentationHook && shouldSetInstrumentationHook(nextjsVersion);\n\n  const wrappedConfig: NextConfig = {\n    ...config,\n    ...(needsInstrumentationHook\n      ? {\n          experimental: {\n            ...config.experimental,\n            instrumentationHook: true,\n          } as any, // Type assertion for experimental features\n        }\n      : {\n          experimental: config.experimental,\n        }),\n    webpack: (webpackConfig: any, webpackOptions: any) => {\n      if (webpackOptions.isServer) {\n        // Safely handle different externals formats (array, function, object, or undefined)\n        const originalExternals = webpackConfig.externals;\n\n        // Check if we're in RECORD or REPLAY mode\n        const mode = process.env.TUSK_DRIFT_MODE?.toUpperCase();\n        const isRecordOrReplay = mode === \"RECORD\" || mode === \"REPLAY\";\n\n        // Core packages that must be external for instrumentation\n        //\n        // Why these packages need to be external:\n        //\n        // 1. require-in-the-middle & jsonpath:\n        //    Required for the instrumentation infrastructure itself.\n        //\n        // 2. Others:\n        //    By default, Next.js webpack bundles other packages into the server bundle at build time.\n        //    Once bundled, there's no runtime require() call for require-in-the-middle to intercept.\n        //    The instrumentation's patch callback never executes because module loading has already\n        //    happened during the webpack build process, not at runtime.\n        //\n        //    By adding it to webpack externals, we tell webpack to exclude these packages from bundling.\n        //    Instead, webpack leaves these packages as a runtime require() call. When the Next.js server starts,\n        //    require-in-the-middle intercepts these runtime require() calls, triggers our instrumentation's\n        //    patch callback, and successfully returns the wrapped moduleExports with the instrumented class.\n\n        //    Next.js externalizes some packages by default, see: https://nextjs.org/docs/app/api-reference/config/next-config-js/serverExternalPackages\n        //    Others we need to add ourselves.\n\n        // Note: Other packages are only added when TUSK_DRIFT_MODE is RECORD or REPLAY\n        const coreExternals = [\n          \"require-in-the-middle\",\n          \"jsonpath\",\n          ...(isRecordOrReplay\n            ? [\n                \"@upstash/redis\",\n                \"ioredis\",\n                \"pg\",\n                \"postgres\",\n                \"mysql2\",\n                \"@prisma/client\",\n                \"@google-cloud/firestore\",\n                \"@grpc/grpc-js\",\n                \"graphql\",\n                \"jsonwebtoken\",\n                \"jwks-rsa\",\n              ]\n            : []),\n        ];\n\n        // Create externals mapping - since SDK's node_modules aren't published,\n        // we rely on these packages being available in the consumer's node_modules\n        const externalsMapping: Record<string, string> = {};\n        for (const pkg of coreExternals) {\n          externalsMapping[pkg] = `commonjs ${pkg}`;\n          debugLog(debug, `Mapped external ${pkg} -> commonjs ${pkg}`);\n        }\n\n        // Add our externals mapping\n        if (!originalExternals) {\n          webpackConfig.externals = [externalsMapping];\n          debugLog(debug, \"Created new externals with SDK paths\");\n        } else if (Array.isArray(originalExternals)) {\n          originalExternals.push(externalsMapping);\n          debugLog(debug, \"Added SDK paths to existing externals array\");\n        } else {\n          webpackConfig.externals = [originalExternals, externalsMapping];\n          debugLog(debug, \"Wrapped existing externals with SDK paths\");\n        }\n      }\n\n      // Call user's webpack function if they provided one\n      if (typeof config.webpack === \"function\") {\n        return config.webpack(webpackConfig, webpackOptions);\n      }\n\n      return webpackConfig;\n    },\n  };\n\n  if (needsInstrumentationHook) {\n    debugLog(debug, \"Set experimental.instrumentationHook to true\");\n  } else {\n    debugLog(\n      debug,\n      \"Skipped setting experimental.instrumentationHook (not needed for Next.js 15.0.0-rc.1+)\",\n    );\n  }\n\n  // Warn if user explicitly disabled instrumentationHook but we need it\n  if (\n    options.disableInstrumentationHook &&\n    nextjsVersion &&\n    shouldSetInstrumentationHook(nextjsVersion)\n  ) {\n    warn(\n      suppressAllWarnings || false,\n      \"You disabled instrumentationHook, but your Next.js version requires it. \" +\n        \"Tusk Drift may not initialize properly. Please remove the disableInstrumentationHook option.\",\n    );\n  }\n\n  return wrappedConfig;\n}\n","export interface TdInstrumentationConfig {\n  enabled?: boolean;\n  [key: string]: any;\n}\n\nexport abstract class TdInstrumentationAbstract {\n  protected _config: TdInstrumentationConfig;\n  protected instrumentationName: string;\n\n  constructor(instrumentationName: string, config: TdInstrumentationConfig = {}) {\n    this.instrumentationName = instrumentationName;\n    this._config = {\n      enabled: false,\n      ...config,\n    };\n  }\n\n  getConfig(): TdInstrumentationConfig {\n    return this._config;\n  }\n\n  setConfig(config: TdInstrumentationConfig = {}): void {\n    this._config = { ...config };\n  }\n\n  get name(): string {\n    return this.instrumentationName;\n  }\n\n  abstract enable(): void;\n  abstract isEnabled(): boolean;\n}\n","/**\n * Shared data normalization utilities to ensure consistent data processing\n * between recording (span export) and replay (mock request) modes.\n *\n * This utility addresses the issue where recording uses JSON.stringify() which omits\n * undefined values, while replay sends raw objects with undefined values that get\n * converted to explicit null fields in protobuf.\n */\n\n/**\n * Safe JSON stringify that handles circular references\n */\nfunction safeJsonStringify(obj: any): string {\n  const seen = new WeakSet();\n  return JSON.stringify(obj, (key, value) => {\n    if (typeof value === \"object\" && value !== null) {\n      if (seen.has(value)) {\n        return \"[Circular]\";\n      }\n      seen.add(value);\n    }\n    return value;\n  });\n}\n\n/**\n * Normalizes input data for consistent processing across recording and replay.\n * This ensures the same data structure is used in both modes by:\n * 1. Filtering out undefined values (like JSON.stringify does)\n * 2. Providing a consistent object structure for hashing\n * 3. Handling circular references safely\n */\nexport function normalizeInputData<T extends Record<string, any>>(inputData: T): T {\n  // Use safe JSON.stringify round-trip to match recording behavior\n  // This removes undefined values, normalizes the data structure, and handles circular references\n  return JSON.parse(safeJsonStringify(inputData)) as T;\n}\n\n/**\n * Creates a normalized input value for span attributes during recording.\n * This should be used instead of direct JSON.stringify to ensure consistency.\n */\nexport function createSpanInputValue(inputData: Record<string, any>): string {\n  const normalized = normalizeInputData(inputData);\n  return safeJsonStringify(normalized);\n}\n\n/**\n * Creates a normalized input value for mock requests during replay.\n * This ensures the same normalization is applied as during recording.\n */\nexport function createMockInputValue<T extends Record<string, any>>(inputData: T): T {\n  return normalizeInputData(inputData);\n}\n","export function shouldSample({\n  samplingRate,\n  isAppReady,\n}: {\n  samplingRate: number;\n  isAppReady: boolean;\n}): boolean {\n  const random = Math.random();\n  if (!isAppReady) {\n    // We should still record if app is not ready\n    return true;\n  }\n  return random < samplingRate;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isJsonObject = exports.typeofJsonValue = void 0;\n/**\n * Get the type of a JSON value.\n * Distinguishes between array, null and object.\n */\nfunction typeofJsonValue(value) {\n    let t = typeof value;\n    if (t == \"object\") {\n        if (Array.isArray(value))\n            return \"array\";\n        if (value === null)\n            return \"null\";\n    }\n    return t;\n}\nexports.typeofJsonValue = typeofJsonValue;\n/**\n * Is this a JSON object (instead of an array or null)?\n */\nfunction isJsonObject(value) {\n    return value !== null && typeof value == \"object\" && !Array.isArray(value);\n}\nexports.isJsonObject = isJsonObject;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.base64encode = exports.base64decode = void 0;\n// lookup table from base64 character to byte\nlet encTable = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n// lookup table from base64 character *code* to byte because lookup by number is fast\nlet decTable = [];\nfor (let i = 0; i < encTable.length; i++)\n    decTable[encTable[i].charCodeAt(0)] = i;\n// support base64url variants\ndecTable[\"-\".charCodeAt(0)] = encTable.indexOf(\"+\");\ndecTable[\"_\".charCodeAt(0)] = encTable.indexOf(\"/\");\n/**\n * Decodes a base64 string to a byte array.\n *\n * - ignores white-space, including line breaks and tabs\n * - allows inner padding (can decode concatenated base64 strings)\n * - does not require padding\n * - understands base64url encoding:\n *   \"-\" instead of \"+\",\n *   \"_\" instead of \"/\",\n *   no padding\n */\nfunction base64decode(base64Str) {\n    // estimate byte size, not accounting for inner padding and whitespace\n    let es = base64Str.length * 3 / 4;\n    // if (es % 3 !== 0)\n    // throw new Error('invalid base64 string');\n    if (base64Str[base64Str.length - 2] == '=')\n        es -= 2;\n    else if (base64Str[base64Str.length - 1] == '=')\n        es -= 1;\n    let bytes = new Uint8Array(es), bytePos = 0, // position in byte array\n    groupPos = 0, // position in base64 group\n    b, // current byte\n    p = 0 // previous byte\n    ;\n    for (let i = 0; i < base64Str.length; i++) {\n        b = decTable[base64Str.charCodeAt(i)];\n        if (b === undefined) {\n            // noinspection FallThroughInSwitchStatementJS\n            switch (base64Str[i]) {\n                case '=':\n                    groupPos = 0; // reset state when padding found\n                case '\\n':\n                case '\\r':\n                case '\\t':\n                case ' ':\n                    continue; // skip white-space, and padding\n                default:\n                    throw Error(`invalid base64 string.`);\n            }\n        }\n        switch (groupPos) {\n            case 0:\n                p = b;\n                groupPos = 1;\n                break;\n            case 1:\n                bytes[bytePos++] = p << 2 | (b & 48) >> 4;\n                p = b;\n                groupPos = 2;\n                break;\n            case 2:\n                bytes[bytePos++] = (p & 15) << 4 | (b & 60) >> 2;\n                p = b;\n                groupPos = 3;\n                break;\n            case 3:\n                bytes[bytePos++] = (p & 3) << 6 | b;\n                groupPos = 0;\n                break;\n        }\n    }\n    if (groupPos == 1)\n        throw Error(`invalid base64 string.`);\n    return bytes.subarray(0, bytePos);\n}\nexports.base64decode = base64decode;\n/**\n * Encodes a byte array to a base64 string.\n * Adds padding at the end.\n * Does not insert newlines.\n */\nfunction base64encode(bytes) {\n    let base64 = '', groupPos = 0, // position in base64 group\n    b, // current byte\n    p = 0; // carry over from previous byte\n    for (let i = 0; i < bytes.length; i++) {\n        b = bytes[i];\n        switch (groupPos) {\n            case 0:\n                base64 += encTable[b >> 2];\n                p = (b & 3) << 4;\n                groupPos = 1;\n                break;\n            case 1:\n                base64 += encTable[p | b >> 4];\n                p = (b & 15) << 2;\n                groupPos = 2;\n                break;\n            case 2:\n                base64 += encTable[p | b >> 6];\n                base64 += encTable[b & 63];\n                groupPos = 0;\n                break;\n        }\n    }\n    // padding required?\n    if (groupPos) {\n        base64 += encTable[p];\n        base64 += '=';\n        if (groupPos == 1)\n            base64 += '=';\n    }\n    return base64;\n}\nexports.base64encode = base64encode;\n","\"use strict\";\n// Copyright (c) 2016, Daniel Wirtz  All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n//   notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above copyright\n//   notice, this list of conditions and the following disclaimer in the\n//   documentation and/or other materials provided with the distribution.\n// * Neither the name of its author, nor the names of its contributors\n//   may be used to endorse or promote products derived from this software\n//   without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.utf8read = void 0;\nconst fromCharCodes = (chunk) => String.fromCharCode.apply(String, chunk);\n/**\n * @deprecated This function will no longer be exported with the next major\n * release, since protobuf-ts has switch to TextDecoder API. If you need this\n * function, please migrate to @protobufjs/utf8. For context, see\n * https://github.com/timostamm/protobuf-ts/issues/184\n *\n * Reads UTF8 bytes as a string.\n *\n * See [protobufjs / utf8](https://github.com/protobufjs/protobuf.js/blob/9893e35b854621cce64af4bf6be2cff4fb892796/lib/utf8/index.js#L40)\n *\n * Copyright (c) 2016, Daniel Wirtz\n */\nfunction utf8read(bytes) {\n    if (bytes.length < 1)\n        return \"\";\n    let pos = 0, // position in bytes\n    parts = [], chunk = [], i = 0, // char offset\n    t; // temporary\n    let len = bytes.length;\n    while (pos < len) {\n        t = bytes[pos++];\n        if (t < 128)\n            chunk[i++] = t;\n        else if (t > 191 && t < 224)\n            chunk[i++] = (t & 31) << 6 | bytes[pos++] & 63;\n        else if (t > 239 && t < 365) {\n            t = ((t & 7) << 18 | (bytes[pos++] & 63) << 12 | (bytes[pos++] & 63) << 6 | bytes[pos++] & 63) - 0x10000;\n            chunk[i++] = 0xD800 + (t >> 10);\n            chunk[i++] = 0xDC00 + (t & 1023);\n        }\n        else\n            chunk[i++] = (t & 15) << 12 | (bytes[pos++] & 63) << 6 | bytes[pos++] & 63;\n        if (i > 8191) {\n            parts.push(fromCharCodes(chunk));\n            i = 0;\n        }\n    }\n    if (parts.length) {\n        if (i)\n            parts.push(fromCharCodes(chunk.slice(0, i)));\n        return parts.join(\"\");\n    }\n    return fromCharCodes(chunk.slice(0, i));\n}\nexports.utf8read = utf8read;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WireType = exports.mergeBinaryOptions = exports.UnknownFieldHandler = void 0;\n/**\n * This handler implements the default behaviour for unknown fields.\n * When reading data, unknown fields are stored on the message, in a\n * symbol property.\n * When writing data, the symbol property is queried and unknown fields\n * are serialized into the output again.\n */\nvar UnknownFieldHandler;\n(function (UnknownFieldHandler) {\n    /**\n     * The symbol used to store unknown fields for a message.\n     * The property must conform to `UnknownFieldContainer`.\n     */\n    UnknownFieldHandler.symbol = Symbol.for(\"protobuf-ts/unknown\");\n    /**\n     * Store an unknown field during binary read directly on the message.\n     * This method is compatible with `BinaryReadOptions.readUnknownField`.\n     */\n    UnknownFieldHandler.onRead = (typeName, message, fieldNo, wireType, data) => {\n        let container = is(message) ? message[UnknownFieldHandler.symbol] : message[UnknownFieldHandler.symbol] = [];\n        container.push({ no: fieldNo, wireType, data });\n    };\n    /**\n     * Write unknown fields stored for the message to the writer.\n     * This method is compatible with `BinaryWriteOptions.writeUnknownFields`.\n     */\n    UnknownFieldHandler.onWrite = (typeName, message, writer) => {\n        for (let { no, wireType, data } of UnknownFieldHandler.list(message))\n            writer.tag(no, wireType).raw(data);\n    };\n    /**\n     * List unknown fields stored for the message.\n     * Note that there may be multiples fields with the same number.\n     */\n    UnknownFieldHandler.list = (message, fieldNo) => {\n        if (is(message)) {\n            let all = message[UnknownFieldHandler.symbol];\n            return fieldNo ? all.filter(uf => uf.no == fieldNo) : all;\n        }\n        return [];\n    };\n    /**\n     * Returns the last unknown field by field number.\n     */\n    UnknownFieldHandler.last = (message, fieldNo) => UnknownFieldHandler.list(message, fieldNo).slice(-1)[0];\n    const is = (message) => message && Array.isArray(message[UnknownFieldHandler.symbol]);\n})(UnknownFieldHandler = exports.UnknownFieldHandler || (exports.UnknownFieldHandler = {}));\n/**\n * Merges binary write or read options. Later values override earlier values.\n */\nfunction mergeBinaryOptions(a, b) {\n    return Object.assign(Object.assign({}, a), b);\n}\nexports.mergeBinaryOptions = mergeBinaryOptions;\n/**\n * Protobuf binary format wire types.\n *\n * A wire type provides just enough information to find the length of the\n * following value.\n *\n * See https://developers.google.com/protocol-buffers/docs/encoding#structure\n */\nvar WireType;\n(function (WireType) {\n    /**\n     * Used for int32, int64, uint32, uint64, sint32, sint64, bool, enum\n     */\n    WireType[WireType[\"Varint\"] = 0] = \"Varint\";\n    /**\n     * Used for fixed64, sfixed64, double.\n     * Always 8 bytes with little-endian byte order.\n     */\n    WireType[WireType[\"Bit64\"] = 1] = \"Bit64\";\n    /**\n     * Used for string, bytes, embedded messages, packed repeated fields\n     *\n     * Only repeated numeric types (types which use the varint, 32-bit,\n     * or 64-bit wire types) can be packed. In proto3, such fields are\n     * packed by default.\n     */\n    WireType[WireType[\"LengthDelimited\"] = 2] = \"LengthDelimited\";\n    /**\n     * Used for groups\n     * @deprecated\n     */\n    WireType[WireType[\"StartGroup\"] = 3] = \"StartGroup\";\n    /**\n     * Used for groups\n     * @deprecated\n     */\n    WireType[WireType[\"EndGroup\"] = 4] = \"EndGroup\";\n    /**\n     * Used for fixed32, sfixed32, float.\n     * Always 4 bytes with little-endian byte order.\n     */\n    WireType[WireType[\"Bit32\"] = 5] = \"Bit32\";\n})(WireType = exports.WireType || (exports.WireType = {}));\n","\"use strict\";\n// Copyright 2008 Google Inc.  All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n// * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Code generated by the Protocol Buffer compiler is owned by the owner\n// of the input file used when generating it.  This code is not\n// standalone and requires a support library to be linked with it.  This\n// support library is itself covered by the above license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.varint32read = exports.varint32write = exports.int64toString = exports.int64fromString = exports.varint64write = exports.varint64read = void 0;\n/**\n * Read a 64 bit varint as two JS numbers.\n *\n * Returns tuple:\n * [0]: low bits\n * [0]: high bits\n *\n * Copyright 2008 Google Inc.  All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L175\n */\nfunction varint64read() {\n    let lowBits = 0;\n    let highBits = 0;\n    for (let shift = 0; shift < 28; shift += 7) {\n        let b = this.buf[this.pos++];\n        lowBits |= (b & 0x7F) << shift;\n        if ((b & 0x80) == 0) {\n            this.assertBounds();\n            return [lowBits, highBits];\n        }\n    }\n    let middleByte = this.buf[this.pos++];\n    // last four bits of the first 32 bit number\n    lowBits |= (middleByte & 0x0F) << 28;\n    // 3 upper bits are part of the next 32 bit number\n    highBits = (middleByte & 0x70) >> 4;\n    if ((middleByte & 0x80) == 0) {\n        this.assertBounds();\n        return [lowBits, highBits];\n    }\n    for (let shift = 3; shift <= 31; shift += 7) {\n        let b = this.buf[this.pos++];\n        highBits |= (b & 0x7F) << shift;\n        if ((b & 0x80) == 0) {\n            this.assertBounds();\n            return [lowBits, highBits];\n        }\n    }\n    throw new Error('invalid varint');\n}\nexports.varint64read = varint64read;\n/**\n * Write a 64 bit varint, given as two JS numbers, to the given bytes array.\n *\n * Copyright 2008 Google Inc.  All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/writer.js#L344\n */\nfunction varint64write(lo, hi, bytes) {\n    for (let i = 0; i < 28; i = i + 7) {\n        const shift = lo >>> i;\n        const hasNext = !((shift >>> 7) == 0 && hi == 0);\n        const byte = (hasNext ? shift | 0x80 : shift) & 0xFF;\n        bytes.push(byte);\n        if (!hasNext) {\n            return;\n        }\n    }\n    const splitBits = ((lo >>> 28) & 0x0F) | ((hi & 0x07) << 4);\n    const hasMoreBits = !((hi >> 3) == 0);\n    bytes.push((hasMoreBits ? splitBits | 0x80 : splitBits) & 0xFF);\n    if (!hasMoreBits) {\n        return;\n    }\n    for (let i = 3; i < 31; i = i + 7) {\n        const shift = hi >>> i;\n        const hasNext = !((shift >>> 7) == 0);\n        const byte = (hasNext ? shift | 0x80 : shift) & 0xFF;\n        bytes.push(byte);\n        if (!hasNext) {\n            return;\n        }\n    }\n    bytes.push((hi >>> 31) & 0x01);\n}\nexports.varint64write = varint64write;\n// constants for binary math\nconst TWO_PWR_32_DBL = (1 << 16) * (1 << 16);\n/**\n * Parse decimal string of 64 bit integer value as two JS numbers.\n *\n * Returns tuple:\n * [0]: minus sign?\n * [1]: low bits\n * [2]: high bits\n *\n * Copyright 2008 Google Inc.\n */\nfunction int64fromString(dec) {\n    // Check for minus sign.\n    let minus = dec[0] == '-';\n    if (minus)\n        dec = dec.slice(1);\n    // Work 6 decimal digits at a time, acting like we're converting base 1e6\n    // digits to binary. This is safe to do with floating point math because\n    // Number.isSafeInteger(ALL_32_BITS * 1e6) == true.\n    const base = 1e6;\n    let lowBits = 0;\n    let highBits = 0;\n    function add1e6digit(begin, end) {\n        // Note: Number('') is 0.\n        const digit1e6 = Number(dec.slice(begin, end));\n        highBits *= base;\n        lowBits = lowBits * base + digit1e6;\n        // Carry bits from lowBits to highBits\n        if (lowBits >= TWO_PWR_32_DBL) {\n            highBits = highBits + ((lowBits / TWO_PWR_32_DBL) | 0);\n            lowBits = lowBits % TWO_PWR_32_DBL;\n        }\n    }\n    add1e6digit(-24, -18);\n    add1e6digit(-18, -12);\n    add1e6digit(-12, -6);\n    add1e6digit(-6);\n    return [minus, lowBits, highBits];\n}\nexports.int64fromString = int64fromString;\n/**\n * Format 64 bit integer value (as two JS numbers) to decimal string.\n *\n * Copyright 2008 Google Inc.\n */\nfunction int64toString(bitsLow, bitsHigh) {\n    // Skip the expensive conversion if the number is small enough to use the\n    // built-in conversions.\n    if ((bitsHigh >>> 0) <= 0x1FFFFF) {\n        return '' + (TWO_PWR_32_DBL * bitsHigh + (bitsLow >>> 0));\n    }\n    // What this code is doing is essentially converting the input number from\n    // base-2 to base-1e7, which allows us to represent the 64-bit range with\n    // only 3 (very large) digits. Those digits are then trivial to convert to\n    // a base-10 string.\n    // The magic numbers used here are -\n    // 2^24 = 16777216 = (1,6777216) in base-1e7.\n    // 2^48 = 281474976710656 = (2,8147497,6710656) in base-1e7.\n    // Split 32:32 representation into 16:24:24 representation so our\n    // intermediate digits don't overflow.\n    let low = bitsLow & 0xFFFFFF;\n    let mid = (((bitsLow >>> 24) | (bitsHigh << 8)) >>> 0) & 0xFFFFFF;\n    let high = (bitsHigh >> 16) & 0xFFFF;\n    // Assemble our three base-1e7 digits, ignoring carries. The maximum\n    // value in a digit at this step is representable as a 48-bit integer, which\n    // can be stored in a 64-bit floating point number.\n    let digitA = low + (mid * 6777216) + (high * 6710656);\n    let digitB = mid + (high * 8147497);\n    let digitC = (high * 2);\n    // Apply carries from A to B and from B to C.\n    let base = 10000000;\n    if (digitA >= base) {\n        digitB += Math.floor(digitA / base);\n        digitA %= base;\n    }\n    if (digitB >= base) {\n        digitC += Math.floor(digitB / base);\n        digitB %= base;\n    }\n    // Convert base-1e7 digits to base-10, with optional leading zeroes.\n    function decimalFrom1e7(digit1e7, needLeadingZeros) {\n        let partial = digit1e7 ? String(digit1e7) : '';\n        if (needLeadingZeros) {\n            return '0000000'.slice(partial.length) + partial;\n        }\n        return partial;\n    }\n    return decimalFrom1e7(digitC, /*needLeadingZeros=*/ 0) +\n        decimalFrom1e7(digitB, /*needLeadingZeros=*/ digitC) +\n        // If the final 1e7 digit didn't need leading zeros, we would have\n        // returned via the trivial code path at the top.\n        decimalFrom1e7(digitA, /*needLeadingZeros=*/ 1);\n}\nexports.int64toString = int64toString;\n/**\n * Write a 32 bit varint, signed or unsigned. Same as `varint64write(0, value, bytes)`\n *\n * Copyright 2008 Google Inc.  All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/1b18833f4f2a2f681f4e4a25cdf3b0a43115ec26/js/binary/encoder.js#L144\n */\nfunction varint32write(value, bytes) {\n    if (value >= 0) {\n        // write value as varint 32\n        while (value > 0x7f) {\n            bytes.push((value & 0x7f) | 0x80);\n            value = value >>> 7;\n        }\n        bytes.push(value);\n    }\n    else {\n        for (let i = 0; i < 9; i++) {\n            bytes.push(value & 127 | 128);\n            value = value >> 7;\n        }\n        bytes.push(1);\n    }\n}\nexports.varint32write = varint32write;\n/**\n * Read an unsigned 32 bit varint.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L220\n */\nfunction varint32read() {\n    let b = this.buf[this.pos++];\n    let result = b & 0x7F;\n    if ((b & 0x80) == 0) {\n        this.assertBounds();\n        return result;\n    }\n    b = this.buf[this.pos++];\n    result |= (b & 0x7F) << 7;\n    if ((b & 0x80) == 0) {\n        this.assertBounds();\n        return result;\n    }\n    b = this.buf[this.pos++];\n    result |= (b & 0x7F) << 14;\n    if ((b & 0x80) == 0) {\n        this.assertBounds();\n        return result;\n    }\n    b = this.buf[this.pos++];\n    result |= (b & 0x7F) << 21;\n    if ((b & 0x80) == 0) {\n        this.assertBounds();\n        return result;\n    }\n    // Extract only last 4 bits\n    b = this.buf[this.pos++];\n    result |= (b & 0x0F) << 28;\n    for (let readBytes = 5; ((b & 0x80) !== 0) && readBytes < 10; readBytes++)\n        b = this.buf[this.pos++];\n    if ((b & 0x80) != 0)\n        throw new Error('invalid varint');\n    this.assertBounds();\n    // Result can have 32 bits, convert it to unsigned\n    return result >>> 0;\n}\nexports.varint32read = varint32read;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PbLong = exports.PbULong = exports.detectBi = void 0;\nconst goog_varint_1 = require(\"./goog-varint\");\nlet BI;\nfunction detectBi() {\n    const dv = new DataView(new ArrayBuffer(8));\n    const ok = globalThis.BigInt !== undefined\n        && typeof dv.getBigInt64 === \"function\"\n        && typeof dv.getBigUint64 === \"function\"\n        && typeof dv.setBigInt64 === \"function\"\n        && typeof dv.setBigUint64 === \"function\";\n    BI = ok ? {\n        MIN: BigInt(\"-9223372036854775808\"),\n        MAX: BigInt(\"9223372036854775807\"),\n        UMIN: BigInt(\"0\"),\n        UMAX: BigInt(\"18446744073709551615\"),\n        C: BigInt,\n        V: dv,\n    } : undefined;\n}\nexports.detectBi = detectBi;\ndetectBi();\nfunction assertBi(bi) {\n    if (!bi)\n        throw new Error(\"BigInt unavailable, see https://github.com/timostamm/protobuf-ts/blob/v1.0.8/MANUAL.md#bigint-support\");\n}\n// used to validate from(string) input (when bigint is unavailable)\nconst RE_DECIMAL_STR = /^-?[0-9]+$/;\n// constants for binary math\nconst TWO_PWR_32_DBL = 0x100000000;\nconst HALF_2_PWR_32 = 0x080000000;\n// base class for PbLong and PbULong provides shared code\nclass SharedPbLong {\n    /**\n     * Create a new instance with the given bits.\n     */\n    constructor(lo, hi) {\n        this.lo = lo | 0;\n        this.hi = hi | 0;\n    }\n    /**\n     * Is this instance equal to 0?\n     */\n    isZero() {\n        return this.lo == 0 && this.hi == 0;\n    }\n    /**\n     * Convert to a native number.\n     */\n    toNumber() {\n        let result = this.hi * TWO_PWR_32_DBL + (this.lo >>> 0);\n        if (!Number.isSafeInteger(result))\n            throw new Error(\"cannot convert to safe number\");\n        return result;\n    }\n}\n/**\n * 64-bit unsigned integer as two 32-bit values.\n * Converts between `string`, `number` and `bigint` representations.\n */\nclass PbULong extends SharedPbLong {\n    /**\n     * Create instance from a `string`, `number` or `bigint`.\n     */\n    static from(value) {\n        if (BI)\n            // noinspection FallThroughInSwitchStatementJS\n            switch (typeof value) {\n                case \"string\":\n                    if (value == \"0\")\n                        return this.ZERO;\n                    if (value == \"\")\n                        throw new Error('string is no integer');\n                    value = BI.C(value);\n                case \"number\":\n                    if (value === 0)\n                        return this.ZERO;\n                    value = BI.C(value);\n                case \"bigint\":\n                    if (!value)\n                        return this.ZERO;\n                    if (value < BI.UMIN)\n                        throw new Error('signed value for ulong');\n                    if (value > BI.UMAX)\n                        throw new Error('ulong too large');\n                    BI.V.setBigUint64(0, value, true);\n                    return new PbULong(BI.V.getInt32(0, true), BI.V.getInt32(4, true));\n            }\n        else\n            switch (typeof value) {\n                case \"string\":\n                    if (value == \"0\")\n                        return this.ZERO;\n                    value = value.trim();\n                    if (!RE_DECIMAL_STR.test(value))\n                        throw new Error('string is no integer');\n                    let [minus, lo, hi] = goog_varint_1.int64fromString(value);\n                    if (minus)\n                        throw new Error('signed value for ulong');\n                    return new PbULong(lo, hi);\n                case \"number\":\n                    if (value == 0)\n                        return this.ZERO;\n                    if (!Number.isSafeInteger(value))\n                        throw new Error('number is no integer');\n                    if (value < 0)\n                        throw new Error('signed value for ulong');\n                    return new PbULong(value, value / TWO_PWR_32_DBL);\n            }\n        throw new Error('unknown value ' + typeof value);\n    }\n    /**\n     * Convert to decimal string.\n     */\n    toString() {\n        return BI ? this.toBigInt().toString() : goog_varint_1.int64toString(this.lo, this.hi);\n    }\n    /**\n     * Convert to native bigint.\n     */\n    toBigInt() {\n        assertBi(BI);\n        BI.V.setInt32(0, this.lo, true);\n        BI.V.setInt32(4, this.hi, true);\n        return BI.V.getBigUint64(0, true);\n    }\n}\nexports.PbULong = PbULong;\n/**\n * ulong 0 singleton.\n */\nPbULong.ZERO = new PbULong(0, 0);\n/**\n * 64-bit signed integer as two 32-bit values.\n * Converts between `string`, `number` and `bigint` representations.\n */\nclass PbLong extends SharedPbLong {\n    /**\n     * Create instance from a `string`, `number` or `bigint`.\n     */\n    static from(value) {\n        if (BI)\n            // noinspection FallThroughInSwitchStatementJS\n            switch (typeof value) {\n                case \"string\":\n                    if (value == \"0\")\n                        return this.ZERO;\n                    if (value == \"\")\n                        throw new Error('string is no integer');\n                    value = BI.C(value);\n                case \"number\":\n                    if (value === 0)\n                        return this.ZERO;\n                    value = BI.C(value);\n                case \"bigint\":\n                    if (!value)\n                        return this.ZERO;\n                    if (value < BI.MIN)\n                        throw new Error('signed long too small');\n                    if (value > BI.MAX)\n                        throw new Error('signed long too large');\n                    BI.V.setBigInt64(0, value, true);\n                    return new PbLong(BI.V.getInt32(0, true), BI.V.getInt32(4, true));\n            }\n        else\n            switch (typeof value) {\n                case \"string\":\n                    if (value == \"0\")\n                        return this.ZERO;\n                    value = value.trim();\n                    if (!RE_DECIMAL_STR.test(value))\n                        throw new Error('string is no integer');\n                    let [minus, lo, hi] = goog_varint_1.int64fromString(value);\n                    if (minus) {\n                        if (hi > HALF_2_PWR_32 || (hi == HALF_2_PWR_32 && lo != 0))\n                            throw new Error('signed long too small');\n                    }\n                    else if (hi >= HALF_2_PWR_32)\n                        throw new Error('signed long too large');\n                    let pbl = new PbLong(lo, hi);\n                    return minus ? pbl.negate() : pbl;\n                case \"number\":\n                    if (value == 0)\n                        return this.ZERO;\n                    if (!Number.isSafeInteger(value))\n                        throw new Error('number is no integer');\n                    return value > 0\n                        ? new PbLong(value, value / TWO_PWR_32_DBL)\n                        : new PbLong(-value, -value / TWO_PWR_32_DBL).negate();\n            }\n        throw new Error('unknown value ' + typeof value);\n    }\n    /**\n     * Do we have a minus sign?\n     */\n    isNegative() {\n        return (this.hi & HALF_2_PWR_32) !== 0;\n    }\n    /**\n     * Negate two's complement.\n     * Invert all the bits and add one to the result.\n     */\n    negate() {\n        let hi = ~this.hi, lo = this.lo;\n        if (lo)\n            lo = ~lo + 1;\n        else\n            hi += 1;\n        return new PbLong(lo, hi);\n    }\n    /**\n     * Convert to decimal string.\n     */\n    toString() {\n        if (BI)\n            return this.toBigInt().toString();\n        if (this.isNegative()) {\n            let n = this.negate();\n            return '-' + goog_varint_1.int64toString(n.lo, n.hi);\n        }\n        return goog_varint_1.int64toString(this.lo, this.hi);\n    }\n    /**\n     * Convert to native bigint.\n     */\n    toBigInt() {\n        assertBi(BI);\n        BI.V.setInt32(0, this.lo, true);\n        BI.V.setInt32(4, this.hi, true);\n        return BI.V.getBigInt64(0, true);\n    }\n}\nexports.PbLong = PbLong;\n/**\n * long 0 singleton.\n */\nPbLong.ZERO = new PbLong(0, 0);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BinaryReader = exports.binaryReadOptions = void 0;\nconst binary_format_contract_1 = require(\"./binary-format-contract\");\nconst pb_long_1 = require(\"./pb-long\");\nconst goog_varint_1 = require(\"./goog-varint\");\nconst defaultsRead = {\n    readUnknownField: true,\n    readerFactory: bytes => new BinaryReader(bytes),\n};\n/**\n * Make options for reading binary data form partial options.\n */\nfunction binaryReadOptions(options) {\n    return options ? Object.assign(Object.assign({}, defaultsRead), options) : defaultsRead;\n}\nexports.binaryReadOptions = binaryReadOptions;\nclass BinaryReader {\n    constructor(buf, textDecoder) {\n        this.varint64 = goog_varint_1.varint64read; // dirty cast for `this`\n        /**\n         * Read a `uint32` field, an unsigned 32 bit varint.\n         */\n        this.uint32 = goog_varint_1.varint32read; // dirty cast for `this` and access to protected `buf`\n        this.buf = buf;\n        this.len = buf.length;\n        this.pos = 0;\n        this.view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n        this.textDecoder = textDecoder !== null && textDecoder !== void 0 ? textDecoder : new TextDecoder(\"utf-8\", {\n            fatal: true,\n            ignoreBOM: true,\n        });\n    }\n    /**\n     * Reads a tag - field number and wire type.\n     */\n    tag() {\n        let tag = this.uint32(), fieldNo = tag >>> 3, wireType = tag & 7;\n        if (fieldNo <= 0 || wireType < 0 || wireType > 5)\n            throw new Error(\"illegal tag: field no \" + fieldNo + \" wire type \" + wireType);\n        return [fieldNo, wireType];\n    }\n    /**\n     * Skip one element on the wire and return the skipped data.\n     * Supports WireType.StartGroup since v2.0.0-alpha.23.\n     */\n    skip(wireType) {\n        let start = this.pos;\n        // noinspection FallThroughInSwitchStatementJS\n        switch (wireType) {\n            case binary_format_contract_1.WireType.Varint:\n                while (this.buf[this.pos++] & 0x80) {\n                    // ignore\n                }\n                break;\n            case binary_format_contract_1.WireType.Bit64:\n                this.pos += 4;\n            case binary_format_contract_1.WireType.Bit32:\n                this.pos += 4;\n                break;\n            case binary_format_contract_1.WireType.LengthDelimited:\n                let len = this.uint32();\n                this.pos += len;\n                break;\n            case binary_format_contract_1.WireType.StartGroup:\n                // From descriptor.proto: Group type is deprecated, not supported in proto3.\n                // But we must still be able to parse and treat as unknown.\n                let t;\n                while ((t = this.tag()[1]) !== binary_format_contract_1.WireType.EndGroup) {\n                    this.skip(t);\n                }\n                break;\n            default:\n                throw new Error(\"cant skip wire type \" + wireType);\n        }\n        this.assertBounds();\n        return this.buf.subarray(start, this.pos);\n    }\n    /**\n     * Throws error if position in byte array is out of range.\n     */\n    assertBounds() {\n        if (this.pos > this.len)\n            throw new RangeError(\"premature EOF\");\n    }\n    /**\n     * Read a `int32` field, a signed 32 bit varint.\n     */\n    int32() {\n        return this.uint32() | 0;\n    }\n    /**\n     * Read a `sint32` field, a signed, zigzag-encoded 32-bit varint.\n     */\n    sint32() {\n        let zze = this.uint32();\n        // decode zigzag\n        return (zze >>> 1) ^ -(zze & 1);\n    }\n    /**\n     * Read a `int64` field, a signed 64-bit varint.\n     */\n    int64() {\n        return new pb_long_1.PbLong(...this.varint64());\n    }\n    /**\n     * Read a `uint64` field, an unsigned 64-bit varint.\n     */\n    uint64() {\n        return new pb_long_1.PbULong(...this.varint64());\n    }\n    /**\n     * Read a `sint64` field, a signed, zig-zag-encoded 64-bit varint.\n     */\n    sint64() {\n        let [lo, hi] = this.varint64();\n        // decode zig zag\n        let s = -(lo & 1);\n        lo = ((lo >>> 1 | (hi & 1) << 31) ^ s);\n        hi = (hi >>> 1 ^ s);\n        return new pb_long_1.PbLong(lo, hi);\n    }\n    /**\n     * Read a `bool` field, a variant.\n     */\n    bool() {\n        let [lo, hi] = this.varint64();\n        return lo !== 0 || hi !== 0;\n    }\n    /**\n     * Read a `fixed32` field, an unsigned, fixed-length 32-bit integer.\n     */\n    fixed32() {\n        return this.view.getUint32((this.pos += 4) - 4, true);\n    }\n    /**\n     * Read a `sfixed32` field, a signed, fixed-length 32-bit integer.\n     */\n    sfixed32() {\n        return this.view.getInt32((this.pos += 4) - 4, true);\n    }\n    /**\n     * Read a `fixed64` field, an unsigned, fixed-length 64 bit integer.\n     */\n    fixed64() {\n        return new pb_long_1.PbULong(this.sfixed32(), this.sfixed32());\n    }\n    /**\n     * Read a `fixed64` field, a signed, fixed-length 64-bit integer.\n     */\n    sfixed64() {\n        return new pb_long_1.PbLong(this.sfixed32(), this.sfixed32());\n    }\n    /**\n     * Read a `float` field, 32-bit floating point number.\n     */\n    float() {\n        return this.view.getFloat32((this.pos += 4) - 4, true);\n    }\n    /**\n     * Read a `double` field, a 64-bit floating point number.\n     */\n    double() {\n        return this.view.getFloat64((this.pos += 8) - 8, true);\n    }\n    /**\n     * Read a `bytes` field, length-delimited arbitrary data.\n     */\n    bytes() {\n        let len = this.uint32();\n        let start = this.pos;\n        this.pos += len;\n        this.assertBounds();\n        return this.buf.subarray(start, start + len);\n    }\n    /**\n     * Read a `string` field, length-delimited data converted to UTF-8 text.\n     */\n    string() {\n        return this.textDecoder.decode(this.bytes());\n    }\n}\nexports.BinaryReader = BinaryReader;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assertFloat32 = exports.assertUInt32 = exports.assertInt32 = exports.assertNever = exports.assert = void 0;\n/**\n * assert that condition is true or throw error (with message)\n */\nfunction assert(condition, msg) {\n    if (!condition) {\n        throw new Error(msg);\n    }\n}\nexports.assert = assert;\n/**\n * assert that value cannot exist = type `never`. throw runtime error if it does.\n */\nfunction assertNever(value, msg) {\n    throw new Error(msg !== null && msg !== void 0 ? msg : 'Unexpected object: ' + value);\n}\nexports.assertNever = assertNever;\nconst FLOAT32_MAX = 3.4028234663852886e+38, FLOAT32_MIN = -3.4028234663852886e+38, UINT32_MAX = 0xFFFFFFFF, INT32_MAX = 0X7FFFFFFF, INT32_MIN = -0X80000000;\nfunction assertInt32(arg) {\n    if (typeof arg !== \"number\")\n        throw new Error('invalid int 32: ' + typeof arg);\n    if (!Number.isInteger(arg) || arg > INT32_MAX || arg < INT32_MIN)\n        throw new Error('invalid int 32: ' + arg);\n}\nexports.assertInt32 = assertInt32;\nfunction assertUInt32(arg) {\n    if (typeof arg !== \"number\")\n        throw new Error('invalid uint 32: ' + typeof arg);\n    if (!Number.isInteger(arg) || arg > UINT32_MAX || arg < 0)\n        throw new Error('invalid uint 32: ' + arg);\n}\nexports.assertUInt32 = assertUInt32;\nfunction assertFloat32(arg) {\n    if (typeof arg !== \"number\")\n        throw new Error('invalid float 32: ' + typeof arg);\n    if (!Number.isFinite(arg))\n        return;\n    if (arg > FLOAT32_MAX || arg < FLOAT32_MIN)\n        throw new Error('invalid float 32: ' + arg);\n}\nexports.assertFloat32 = assertFloat32;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BinaryWriter = exports.binaryWriteOptions = void 0;\nconst pb_long_1 = require(\"./pb-long\");\nconst goog_varint_1 = require(\"./goog-varint\");\nconst assert_1 = require(\"./assert\");\nconst defaultsWrite = {\n    writeUnknownFields: true,\n    writerFactory: () => new BinaryWriter(),\n};\n/**\n * Make options for writing binary data form partial options.\n */\nfunction binaryWriteOptions(options) {\n    return options ? Object.assign(Object.assign({}, defaultsWrite), options) : defaultsWrite;\n}\nexports.binaryWriteOptions = binaryWriteOptions;\nclass BinaryWriter {\n    constructor(textEncoder) {\n        /**\n         * Previous fork states.\n         */\n        this.stack = [];\n        this.textEncoder = textEncoder !== null && textEncoder !== void 0 ? textEncoder : new TextEncoder();\n        this.chunks = [];\n        this.buf = [];\n    }\n    /**\n     * Return all bytes written and reset this writer.\n     */\n    finish() {\n        this.chunks.push(new Uint8Array(this.buf)); // flush the buffer\n        let len = 0;\n        for (let i = 0; i < this.chunks.length; i++)\n            len += this.chunks[i].length;\n        let bytes = new Uint8Array(len);\n        let offset = 0;\n        for (let i = 0; i < this.chunks.length; i++) {\n            bytes.set(this.chunks[i], offset);\n            offset += this.chunks[i].length;\n        }\n        this.chunks = [];\n        return bytes;\n    }\n    /**\n     * Start a new fork for length-delimited data like a message\n     * or a packed repeated field.\n     *\n     * Must be joined later with `join()`.\n     */\n    fork() {\n        this.stack.push({ chunks: this.chunks, buf: this.buf });\n        this.chunks = [];\n        this.buf = [];\n        return this;\n    }\n    /**\n     * Join the last fork. Write its length and bytes, then\n     * return to the previous state.\n     */\n    join() {\n        // get chunk of fork\n        let chunk = this.finish();\n        // restore previous state\n        let prev = this.stack.pop();\n        if (!prev)\n            throw new Error('invalid state, fork stack empty');\n        this.chunks = prev.chunks;\n        this.buf = prev.buf;\n        // write length of chunk as varint\n        this.uint32(chunk.byteLength);\n        return this.raw(chunk);\n    }\n    /**\n     * Writes a tag (field number and wire type).\n     *\n     * Equivalent to `uint32( (fieldNo << 3 | type) >>> 0 )`.\n     *\n     * Generated code should compute the tag ahead of time and call `uint32()`.\n     */\n    tag(fieldNo, type) {\n        return this.uint32((fieldNo << 3 | type) >>> 0);\n    }\n    /**\n     * Write a chunk of raw bytes.\n     */\n    raw(chunk) {\n        if (this.buf.length) {\n            this.chunks.push(new Uint8Array(this.buf));\n            this.buf = [];\n        }\n        this.chunks.push(chunk);\n        return this;\n    }\n    /**\n     * Write a `uint32` value, an unsigned 32 bit varint.\n     */\n    uint32(value) {\n        assert_1.assertUInt32(value);\n        // write value as varint 32, inlined for speed\n        while (value > 0x7f) {\n            this.buf.push((value & 0x7f) | 0x80);\n            value = value >>> 7;\n        }\n        this.buf.push(value);\n        return this;\n    }\n    /**\n     * Write a `int32` value, a signed 32 bit varint.\n     */\n    int32(value) {\n        assert_1.assertInt32(value);\n        goog_varint_1.varint32write(value, this.buf);\n        return this;\n    }\n    /**\n     * Write a `bool` value, a variant.\n     */\n    bool(value) {\n        this.buf.push(value ? 1 : 0);\n        return this;\n    }\n    /**\n     * Write a `bytes` value, length-delimited arbitrary data.\n     */\n    bytes(value) {\n        this.uint32(value.byteLength); // write length of chunk as varint\n        return this.raw(value);\n    }\n    /**\n     * Write a `string` value, length-delimited data converted to UTF-8 text.\n     */\n    string(value) {\n        let chunk = this.textEncoder.encode(value);\n        this.uint32(chunk.byteLength); // write length of chunk as varint\n        return this.raw(chunk);\n    }\n    /**\n     * Write a `float` value, 32-bit floating point number.\n     */\n    float(value) {\n        assert_1.assertFloat32(value);\n        let chunk = new Uint8Array(4);\n        new DataView(chunk.buffer).setFloat32(0, value, true);\n        return this.raw(chunk);\n    }\n    /**\n     * Write a `double` value, a 64-bit floating point number.\n     */\n    double(value) {\n        let chunk = new Uint8Array(8);\n        new DataView(chunk.buffer).setFloat64(0, value, true);\n        return this.raw(chunk);\n    }\n    /**\n     * Write a `fixed32` value, an unsigned, fixed-length 32-bit integer.\n     */\n    fixed32(value) {\n        assert_1.assertUInt32(value);\n        let chunk = new Uint8Array(4);\n        new DataView(chunk.buffer).setUint32(0, value, true);\n        return this.raw(chunk);\n    }\n    /**\n     * Write a `sfixed32` value, a signed, fixed-length 32-bit integer.\n     */\n    sfixed32(value) {\n        assert_1.assertInt32(value);\n        let chunk = new Uint8Array(4);\n        new DataView(chunk.buffer).setInt32(0, value, true);\n        return this.raw(chunk);\n    }\n    /**\n     * Write a `sint32` value, a signed, zigzag-encoded 32-bit varint.\n     */\n    sint32(value) {\n        assert_1.assertInt32(value);\n        // zigzag encode\n        value = ((value << 1) ^ (value >> 31)) >>> 0;\n        goog_varint_1.varint32write(value, this.buf);\n        return this;\n    }\n    /**\n     * Write a `fixed64` value, a signed, fixed-length 64-bit integer.\n     */\n    sfixed64(value) {\n        let chunk = new Uint8Array(8);\n        let view = new DataView(chunk.buffer);\n        let long = pb_long_1.PbLong.from(value);\n        view.setInt32(0, long.lo, true);\n        view.setInt32(4, long.hi, true);\n        return this.raw(chunk);\n    }\n    /**\n     * Write a `fixed64` value, an unsigned, fixed-length 64 bit integer.\n     */\n    fixed64(value) {\n        let chunk = new Uint8Array(8);\n        let view = new DataView(chunk.buffer);\n        let long = pb_long_1.PbULong.from(value);\n        view.setInt32(0, long.lo, true);\n        view.setInt32(4, long.hi, true);\n        return this.raw(chunk);\n    }\n    /**\n     * Write a `int64` value, a signed 64-bit varint.\n     */\n    int64(value) {\n        let long = pb_long_1.PbLong.from(value);\n        goog_varint_1.varint64write(long.lo, long.hi, this.buf);\n        return this;\n    }\n    /**\n     * Write a `sint64` value, a signed, zig-zag-encoded 64-bit varint.\n     */\n    sint64(value) {\n        let long = pb_long_1.PbLong.from(value), \n        // zigzag encode\n        sign = long.hi >> 31, lo = (long.lo << 1) ^ sign, hi = ((long.hi << 1) | (long.lo >>> 31)) ^ sign;\n        goog_varint_1.varint64write(lo, hi, this.buf);\n        return this;\n    }\n    /**\n     * Write a `uint64` value, an unsigned 64-bit varint.\n     */\n    uint64(value) {\n        let long = pb_long_1.PbULong.from(value);\n        goog_varint_1.varint64write(long.lo, long.hi, this.buf);\n        return this;\n    }\n}\nexports.BinaryWriter = BinaryWriter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeJsonOptions = exports.jsonWriteOptions = exports.jsonReadOptions = void 0;\nconst defaultsWrite = {\n    emitDefaultValues: false,\n    enumAsInteger: false,\n    useProtoFieldName: false,\n    prettySpaces: 0,\n}, defaultsRead = {\n    ignoreUnknownFields: false,\n};\n/**\n * Make options for reading JSON data from partial options.\n */\nfunction jsonReadOptions(options) {\n    return options ? Object.assign(Object.assign({}, defaultsRead), options) : defaultsRead;\n}\nexports.jsonReadOptions = jsonReadOptions;\n/**\n * Make options for writing JSON data from partial options.\n */\nfunction jsonWriteOptions(options) {\n    return options ? Object.assign(Object.assign({}, defaultsWrite), options) : defaultsWrite;\n}\nexports.jsonWriteOptions = jsonWriteOptions;\n/**\n * Merges JSON write or read options. Later values override earlier values. Type registries are merged.\n */\nfunction mergeJsonOptions(a, b) {\n    var _a, _b;\n    let c = Object.assign(Object.assign({}, a), b);\n    c.typeRegistry = [...((_a = a === null || a === void 0 ? void 0 : a.typeRegistry) !== null && _a !== void 0 ? _a : []), ...((_b = b === null || b === void 0 ? void 0 : b.typeRegistry) !== null && _b !== void 0 ? _b : [])];\n    return c;\n}\nexports.mergeJsonOptions = mergeJsonOptions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MESSAGE_TYPE = void 0;\n/**\n * The symbol used as a key on message objects to store the message type.\n *\n * Note that this is an experimental feature - it is here to stay, but\n * implementation details may change without notice.\n */\nexports.MESSAGE_TYPE = Symbol.for(\"protobuf-ts/message-type\");\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lowerCamelCase = void 0;\n/**\n * Converts snake_case to lowerCamelCase.\n *\n * Should behave like protoc:\n * https://github.com/protocolbuffers/protobuf/blob/e8ae137c96444ea313485ed1118c5e43b2099cf1/src/google/protobuf/compiler/java/java_helpers.cc#L118\n */\nfunction lowerCamelCase(snakeCase) {\n    let capNext = false;\n    const sb = [];\n    for (let i = 0; i < snakeCase.length; i++) {\n        let next = snakeCase.charAt(i);\n        if (next == '_') {\n            capNext = true;\n        }\n        else if (/\\d/.test(next)) {\n            sb.push(next);\n            capNext = true;\n        }\n        else if (capNext) {\n            sb.push(next.toUpperCase());\n            capNext = false;\n        }\n        else if (i == 0) {\n            sb.push(next.toLowerCase());\n        }\n        else {\n            sb.push(next);\n        }\n    }\n    return sb.join('');\n}\nexports.lowerCamelCase = lowerCamelCase;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.readMessageOption = exports.readFieldOption = exports.readFieldOptions = exports.normalizeFieldInfo = exports.RepeatType = exports.LongType = exports.ScalarType = void 0;\nconst lower_camel_case_1 = require(\"./lower-camel-case\");\n/**\n * Scalar value types. This is a subset of field types declared by protobuf\n * enum google.protobuf.FieldDescriptorProto.Type The types GROUP and MESSAGE\n * are omitted, but the numerical values are identical.\n */\nvar ScalarType;\n(function (ScalarType) {\n    // 0 is reserved for errors.\n    // Order is weird for historical reasons.\n    ScalarType[ScalarType[\"DOUBLE\"] = 1] = \"DOUBLE\";\n    ScalarType[ScalarType[\"FLOAT\"] = 2] = \"FLOAT\";\n    // Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if\n    // negative values are likely.\n    ScalarType[ScalarType[\"INT64\"] = 3] = \"INT64\";\n    ScalarType[ScalarType[\"UINT64\"] = 4] = \"UINT64\";\n    // Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if\n    // negative values are likely.\n    ScalarType[ScalarType[\"INT32\"] = 5] = \"INT32\";\n    ScalarType[ScalarType[\"FIXED64\"] = 6] = \"FIXED64\";\n    ScalarType[ScalarType[\"FIXED32\"] = 7] = \"FIXED32\";\n    ScalarType[ScalarType[\"BOOL\"] = 8] = \"BOOL\";\n    ScalarType[ScalarType[\"STRING\"] = 9] = \"STRING\";\n    // Tag-delimited aggregate.\n    // Group type is deprecated and not supported in proto3. However, Proto3\n    // implementations should still be able to parse the group wire format and\n    // treat group fields as unknown fields.\n    // TYPE_GROUP = 10,\n    // TYPE_MESSAGE = 11,  // Length-delimited aggregate.\n    // New in version 2.\n    ScalarType[ScalarType[\"BYTES\"] = 12] = \"BYTES\";\n    ScalarType[ScalarType[\"UINT32\"] = 13] = \"UINT32\";\n    // TYPE_ENUM = 14,\n    ScalarType[ScalarType[\"SFIXED32\"] = 15] = \"SFIXED32\";\n    ScalarType[ScalarType[\"SFIXED64\"] = 16] = \"SFIXED64\";\n    ScalarType[ScalarType[\"SINT32\"] = 17] = \"SINT32\";\n    ScalarType[ScalarType[\"SINT64\"] = 18] = \"SINT64\";\n})(ScalarType = exports.ScalarType || (exports.ScalarType = {}));\n/**\n * JavaScript representation of 64 bit integral types. Equivalent to the\n * field option \"jstype\".\n *\n * By default, protobuf-ts represents 64 bit types as `bigint`.\n *\n * You can change the default behaviour by enabling the plugin parameter\n * `long_type_string`, which will represent 64 bit types as `string`.\n *\n * Alternatively, you can change the behaviour for individual fields\n * with the field option \"jstype\":\n *\n * ```protobuf\n * uint64 my_field = 1 [jstype = JS_STRING];\n * uint64 other_field = 2 [jstype = JS_NUMBER];\n * ```\n */\nvar LongType;\n(function (LongType) {\n    /**\n     * Use JavaScript `bigint`.\n     *\n     * Field option `[jstype = JS_NORMAL]`.\n     */\n    LongType[LongType[\"BIGINT\"] = 0] = \"BIGINT\";\n    /**\n     * Use JavaScript `string`.\n     *\n     * Field option `[jstype = JS_STRING]`.\n     */\n    LongType[LongType[\"STRING\"] = 1] = \"STRING\";\n    /**\n     * Use JavaScript `number`.\n     *\n     * Large values will loose precision.\n     *\n     * Field option `[jstype = JS_NUMBER]`.\n     */\n    LongType[LongType[\"NUMBER\"] = 2] = \"NUMBER\";\n})(LongType = exports.LongType || (exports.LongType = {}));\n/**\n * Protobuf 2.1.0 introduced packed repeated fields.\n * Setting the field option `[packed = true]` enables packing.\n *\n * In proto3, all repeated fields are packed by default.\n * Setting the field option `[packed = false]` disables packing.\n *\n * Packed repeated fields are encoded with a single tag,\n * then a length-delimiter, then the element values.\n *\n * Unpacked repeated fields are encoded with a tag and\n * value for each element.\n *\n * `bytes` and `string` cannot be packed.\n */\nvar RepeatType;\n(function (RepeatType) {\n    /**\n     * The field is not repeated.\n     */\n    RepeatType[RepeatType[\"NO\"] = 0] = \"NO\";\n    /**\n     * The field is repeated and should be packed.\n     * Invalid for `bytes` and `string`, they cannot be packed.\n     */\n    RepeatType[RepeatType[\"PACKED\"] = 1] = \"PACKED\";\n    /**\n     * The field is repeated but should not be packed.\n     * The only valid repeat type for repeated `bytes` and `string`.\n     */\n    RepeatType[RepeatType[\"UNPACKED\"] = 2] = \"UNPACKED\";\n})(RepeatType = exports.RepeatType || (exports.RepeatType = {}));\n/**\n * Turns PartialFieldInfo into FieldInfo.\n */\nfunction normalizeFieldInfo(field) {\n    var _a, _b, _c, _d;\n    field.localName = (_a = field.localName) !== null && _a !== void 0 ? _a : lower_camel_case_1.lowerCamelCase(field.name);\n    field.jsonName = (_b = field.jsonName) !== null && _b !== void 0 ? _b : lower_camel_case_1.lowerCamelCase(field.name);\n    field.repeat = (_c = field.repeat) !== null && _c !== void 0 ? _c : RepeatType.NO;\n    field.opt = (_d = field.opt) !== null && _d !== void 0 ? _d : (field.repeat ? false : field.oneof ? false : field.kind == \"message\");\n    return field;\n}\nexports.normalizeFieldInfo = normalizeFieldInfo;\n/**\n * Read custom field options from a generated message type.\n *\n * @deprecated use readFieldOption()\n */\nfunction readFieldOptions(messageType, fieldName, extensionName, extensionType) {\n    var _a;\n    const options = (_a = messageType.fields.find((m, i) => m.localName == fieldName || i == fieldName)) === null || _a === void 0 ? void 0 : _a.options;\n    return options && options[extensionName] ? extensionType.fromJson(options[extensionName]) : undefined;\n}\nexports.readFieldOptions = readFieldOptions;\nfunction readFieldOption(messageType, fieldName, extensionName, extensionType) {\n    var _a;\n    const options = (_a = messageType.fields.find((m, i) => m.localName == fieldName || i == fieldName)) === null || _a === void 0 ? void 0 : _a.options;\n    if (!options) {\n        return undefined;\n    }\n    const optionVal = options[extensionName];\n    if (optionVal === undefined) {\n        return optionVal;\n    }\n    return extensionType ? extensionType.fromJson(optionVal) : optionVal;\n}\nexports.readFieldOption = readFieldOption;\nfunction readMessageOption(messageType, extensionName, extensionType) {\n    const options = messageType.options;\n    const optionVal = options[extensionName];\n    if (optionVal === undefined) {\n        return optionVal;\n    }\n    return extensionType ? extensionType.fromJson(optionVal) : optionVal;\n}\nexports.readMessageOption = readMessageOption;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSelectedOneofValue = exports.clearOneofValue = exports.setUnknownOneofValue = exports.setOneofValue = exports.getOneofValue = exports.isOneofGroup = void 0;\n/**\n * Is the given value a valid oneof group?\n *\n * We represent protobuf `oneof` as algebraic data types (ADT) in generated\n * code. But when working with messages of unknown type, the ADT does not\n * help us.\n *\n * This type guard checks if the given object adheres to the ADT rules, which\n * are as follows:\n *\n * 1) Must be an object.\n *\n * 2) Must have a \"oneofKind\" discriminator property.\n *\n * 3) If \"oneofKind\" is `undefined`, no member field is selected. The object\n * must not have any other properties.\n *\n * 4) If \"oneofKind\" is a `string`, the member field with this name is\n * selected.\n *\n * 5) If a member field is selected, the object must have a second property\n * with this name. The property must not be `undefined`.\n *\n * 6) No extra properties are allowed. The object has either one property\n * (no selection) or two properties (selection).\n *\n */\nfunction isOneofGroup(any) {\n    if (typeof any != 'object' || any === null || !any.hasOwnProperty('oneofKind')) {\n        return false;\n    }\n    switch (typeof any.oneofKind) {\n        case \"string\":\n            if (any[any.oneofKind] === undefined)\n                return false;\n            return Object.keys(any).length == 2;\n        case \"undefined\":\n            return Object.keys(any).length == 1;\n        default:\n            return false;\n    }\n}\nexports.isOneofGroup = isOneofGroup;\n/**\n * Returns the value of the given field in a oneof group.\n */\nfunction getOneofValue(oneof, kind) {\n    return oneof[kind];\n}\nexports.getOneofValue = getOneofValue;\nfunction setOneofValue(oneof, kind, value) {\n    if (oneof.oneofKind !== undefined) {\n        delete oneof[oneof.oneofKind];\n    }\n    oneof.oneofKind = kind;\n    if (value !== undefined) {\n        oneof[kind] = value;\n    }\n}\nexports.setOneofValue = setOneofValue;\nfunction setUnknownOneofValue(oneof, kind, value) {\n    if (oneof.oneofKind !== undefined) {\n        delete oneof[oneof.oneofKind];\n    }\n    oneof.oneofKind = kind;\n    if (value !== undefined && kind !== undefined) {\n        oneof[kind] = value;\n    }\n}\nexports.setUnknownOneofValue = setUnknownOneofValue;\n/**\n * Removes the selected field in a oneof group.\n *\n * Note that the recommended way to modify a oneof group is to set\n * a new object:\n *\n * ```ts\n * message.result = { oneofKind: undefined };\n * ```\n */\nfunction clearOneofValue(oneof) {\n    if (oneof.oneofKind !== undefined) {\n        delete oneof[oneof.oneofKind];\n    }\n    oneof.oneofKind = undefined;\n}\nexports.clearOneofValue = clearOneofValue;\n/**\n * Returns the selected value of the given oneof group.\n *\n * Not that the recommended way to access a oneof group is to check\n * the \"oneofKind\" property and let TypeScript narrow down the union\n * type for you:\n *\n * ```ts\n * if (message.result.oneofKind === \"error\") {\n *   message.result.error; // string\n * }\n * ```\n *\n * In the rare case you just need the value, and do not care about\n * which protobuf field is selected, you can use this function\n * for convenience.\n */\nfunction getSelectedOneofValue(oneof) {\n    if (oneof.oneofKind === undefined) {\n        return undefined;\n    }\n    return oneof[oneof.oneofKind];\n}\nexports.getSelectedOneofValue = getSelectedOneofValue;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReflectionTypeCheck = void 0;\nconst reflection_info_1 = require(\"./reflection-info\");\nconst oneof_1 = require(\"./oneof\");\n// noinspection JSMethodCanBeStatic\nclass ReflectionTypeCheck {\n    constructor(info) {\n        var _a;\n        this.fields = (_a = info.fields) !== null && _a !== void 0 ? _a : [];\n    }\n    prepare() {\n        if (this.data)\n            return;\n        const req = [], known = [], oneofs = [];\n        for (let field of this.fields) {\n            if (field.oneof) {\n                if (!oneofs.includes(field.oneof)) {\n                    oneofs.push(field.oneof);\n                    req.push(field.oneof);\n                    known.push(field.oneof);\n                }\n            }\n            else {\n                known.push(field.localName);\n                switch (field.kind) {\n                    case \"scalar\":\n                    case \"enum\":\n                        if (!field.opt || field.repeat)\n                            req.push(field.localName);\n                        break;\n                    case \"message\":\n                        if (field.repeat)\n                            req.push(field.localName);\n                        break;\n                    case \"map\":\n                        req.push(field.localName);\n                        break;\n                }\n            }\n        }\n        this.data = { req, known, oneofs: Object.values(oneofs) };\n    }\n    /**\n     * Is the argument a valid message as specified by the\n     * reflection information?\n     *\n     * Checks all field types recursively. The `depth`\n     * specifies how deep into the structure the check will be.\n     *\n     * With a depth of 0, only the presence of fields\n     * is checked.\n     *\n     * With a depth of 1 or more, the field types are checked.\n     *\n     * With a depth of 2 or more, the members of map, repeated\n     * and message fields are checked.\n     *\n     * Message fields will be checked recursively with depth - 1.\n     *\n     * The number of map entries / repeated values being checked\n     * is < depth.\n     */\n    is(message, depth, allowExcessProperties = false) {\n        if (depth < 0)\n            return true;\n        if (message === null || message === undefined || typeof message != 'object')\n            return false;\n        this.prepare();\n        let keys = Object.keys(message), data = this.data;\n        // if a required field is missing in arg, this cannot be a T\n        if (keys.length < data.req.length || data.req.some(n => !keys.includes(n)))\n            return false;\n        if (!allowExcessProperties) {\n            // if the arg contains a key we dont know, this is not a literal T\n            if (keys.some(k => !data.known.includes(k)))\n                return false;\n        }\n        // \"With a depth of 0, only the presence and absence of fields is checked.\"\n        // \"With a depth of 1 or more, the field types are checked.\"\n        if (depth < 1) {\n            return true;\n        }\n        // check oneof group\n        for (const name of data.oneofs) {\n            const group = message[name];\n            if (!oneof_1.isOneofGroup(group))\n                return false;\n            if (group.oneofKind === undefined)\n                continue;\n            const field = this.fields.find(f => f.localName === group.oneofKind);\n            if (!field)\n                return false; // we found no field, but have a kind, something is wrong\n            if (!this.field(group[group.oneofKind], field, allowExcessProperties, depth))\n                return false;\n        }\n        // check types\n        for (const field of this.fields) {\n            if (field.oneof !== undefined)\n                continue;\n            if (!this.field(message[field.localName], field, allowExcessProperties, depth))\n                return false;\n        }\n        return true;\n    }\n    field(arg, field, allowExcessProperties, depth) {\n        let repeated = field.repeat;\n        switch (field.kind) {\n            case \"scalar\":\n                if (arg === undefined)\n                    return field.opt;\n                if (repeated)\n                    return this.scalars(arg, field.T, depth, field.L);\n                return this.scalar(arg, field.T, field.L);\n            case \"enum\":\n                if (arg === undefined)\n                    return field.opt;\n                if (repeated)\n                    return this.scalars(arg, reflection_info_1.ScalarType.INT32, depth);\n                return this.scalar(arg, reflection_info_1.ScalarType.INT32);\n            case \"message\":\n                if (arg === undefined)\n                    return true;\n                if (repeated)\n                    return this.messages(arg, field.T(), allowExcessProperties, depth);\n                return this.message(arg, field.T(), allowExcessProperties, depth);\n            case \"map\":\n                if (typeof arg != 'object' || arg === null)\n                    return false;\n                if (depth < 2)\n                    return true;\n                if (!this.mapKeys(arg, field.K, depth))\n                    return false;\n                switch (field.V.kind) {\n                    case \"scalar\":\n                        return this.scalars(Object.values(arg), field.V.T, depth, field.V.L);\n                    case \"enum\":\n                        return this.scalars(Object.values(arg), reflection_info_1.ScalarType.INT32, depth);\n                    case \"message\":\n                        return this.messages(Object.values(arg), field.V.T(), allowExcessProperties, depth);\n                }\n                break;\n        }\n        return true;\n    }\n    message(arg, type, allowExcessProperties, depth) {\n        if (allowExcessProperties) {\n            return type.isAssignable(arg, depth);\n        }\n        return type.is(arg, depth);\n    }\n    messages(arg, type, allowExcessProperties, depth) {\n        if (!Array.isArray(arg))\n            return false;\n        if (depth < 2)\n            return true;\n        if (allowExcessProperties) {\n            for (let i = 0; i < arg.length && i < depth; i++)\n                if (!type.isAssignable(arg[i], depth - 1))\n                    return false;\n        }\n        else {\n            for (let i = 0; i < arg.length && i < depth; i++)\n                if (!type.is(arg[i], depth - 1))\n                    return false;\n        }\n        return true;\n    }\n    scalar(arg, type, longType) {\n        let argType = typeof arg;\n        switch (type) {\n            case reflection_info_1.ScalarType.UINT64:\n            case reflection_info_1.ScalarType.FIXED64:\n            case reflection_info_1.ScalarType.INT64:\n            case reflection_info_1.ScalarType.SFIXED64:\n            case reflection_info_1.ScalarType.SINT64:\n                switch (longType) {\n                    case reflection_info_1.LongType.BIGINT:\n                        return argType == \"bigint\";\n                    case reflection_info_1.LongType.NUMBER:\n                        return argType == \"number\" && !isNaN(arg);\n                    default:\n                        return argType == \"string\";\n                }\n            case reflection_info_1.ScalarType.BOOL:\n                return argType == 'boolean';\n            case reflection_info_1.ScalarType.STRING:\n                return argType == 'string';\n            case reflection_info_1.ScalarType.BYTES:\n                return arg instanceof Uint8Array;\n            case reflection_info_1.ScalarType.DOUBLE:\n            case reflection_info_1.ScalarType.FLOAT:\n                return argType == 'number' && !isNaN(arg);\n            default:\n                // case ScalarType.UINT32:\n                // case ScalarType.FIXED32:\n                // case ScalarType.INT32:\n                // case ScalarType.SINT32:\n                // case ScalarType.SFIXED32:\n                return argType == 'number' && Number.isInteger(arg);\n        }\n    }\n    scalars(arg, type, depth, longType) {\n        if (!Array.isArray(arg))\n            return false;\n        if (depth < 2)\n            return true;\n        if (Array.isArray(arg))\n            for (let i = 0; i < arg.length && i < depth; i++)\n                if (!this.scalar(arg[i], type, longType))\n                    return false;\n        return true;\n    }\n    mapKeys(map, type, depth) {\n        let keys = Object.keys(map);\n        switch (type) {\n            case reflection_info_1.ScalarType.INT32:\n            case reflection_info_1.ScalarType.FIXED32:\n            case reflection_info_1.ScalarType.SFIXED32:\n            case reflection_info_1.ScalarType.SINT32:\n            case reflection_info_1.ScalarType.UINT32:\n                return this.scalars(keys.slice(0, depth).map(k => parseInt(k)), type, depth);\n            case reflection_info_1.ScalarType.BOOL:\n                return this.scalars(keys.slice(0, depth).map(k => k == 'true' ? true : k == 'false' ? false : k), type, depth);\n            default:\n                return this.scalars(keys, type, depth, reflection_info_1.LongType.STRING);\n        }\n    }\n}\nexports.ReflectionTypeCheck = ReflectionTypeCheck;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reflectionLongConvert = void 0;\nconst reflection_info_1 = require(\"./reflection-info\");\n/**\n * Utility method to convert a PbLong or PbUlong to a JavaScript\n * representation during runtime.\n *\n * Works with generated field information, `undefined` is equivalent\n * to `STRING`.\n */\nfunction reflectionLongConvert(long, type) {\n    switch (type) {\n        case reflection_info_1.LongType.BIGINT:\n            return long.toBigInt();\n        case reflection_info_1.LongType.NUMBER:\n            return long.toNumber();\n        default:\n            // case undefined:\n            // case LongType.STRING:\n            return long.toString();\n    }\n}\nexports.reflectionLongConvert = reflectionLongConvert;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReflectionJsonReader = void 0;\nconst json_typings_1 = require(\"./json-typings\");\nconst base64_1 = require(\"./base64\");\nconst reflection_info_1 = require(\"./reflection-info\");\nconst pb_long_1 = require(\"./pb-long\");\nconst assert_1 = require(\"./assert\");\nconst reflection_long_convert_1 = require(\"./reflection-long-convert\");\n/**\n * Reads proto3 messages in canonical JSON format using reflection information.\n *\n * https://developers.google.com/protocol-buffers/docs/proto3#json\n */\nclass ReflectionJsonReader {\n    constructor(info) {\n        this.info = info;\n    }\n    prepare() {\n        var _a;\n        if (this.fMap === undefined) {\n            this.fMap = {};\n            const fieldsInput = (_a = this.info.fields) !== null && _a !== void 0 ? _a : [];\n            for (const field of fieldsInput) {\n                this.fMap[field.name] = field;\n                this.fMap[field.jsonName] = field;\n                this.fMap[field.localName] = field;\n            }\n        }\n    }\n    // Cannot parse JSON <type of jsonValue> for <type name>#<fieldName>.\n    assert(condition, fieldName, jsonValue) {\n        if (!condition) {\n            let what = json_typings_1.typeofJsonValue(jsonValue);\n            if (what == \"number\" || what == \"boolean\")\n                what = jsonValue.toString();\n            throw new Error(`Cannot parse JSON ${what} for ${this.info.typeName}#${fieldName}`);\n        }\n    }\n    /**\n     * Reads a message from canonical JSON format into the target message.\n     *\n     * Repeated fields are appended. Map entries are added, overwriting\n     * existing keys.\n     *\n     * If a message field is already present, it will be merged with the\n     * new data.\n     */\n    read(input, message, options) {\n        this.prepare();\n        const oneofsHandled = [];\n        for (const [jsonKey, jsonValue] of Object.entries(input)) {\n            const field = this.fMap[jsonKey];\n            if (!field) {\n                if (!options.ignoreUnknownFields)\n                    throw new Error(`Found unknown field while reading ${this.info.typeName} from JSON format. JSON key: ${jsonKey}`);\n                continue;\n            }\n            const localName = field.localName;\n            // handle oneof ADT\n            let target; // this will be the target for the field value, whether it is member of a oneof or not\n            if (field.oneof) {\n                if (jsonValue === null && (field.kind !== 'enum' || field.T()[0] !== 'google.protobuf.NullValue')) {\n                    continue;\n                }\n                // since json objects are unordered by specification, it is not possible to take the last of multiple oneofs\n                if (oneofsHandled.includes(field.oneof))\n                    throw new Error(`Multiple members of the oneof group \"${field.oneof}\" of ${this.info.typeName} are present in JSON.`);\n                oneofsHandled.push(field.oneof);\n                target = message[field.oneof] = {\n                    oneofKind: localName\n                };\n            }\n            else {\n                target = message;\n            }\n            // we have handled oneof above. we just have read the value into `target`.\n            if (field.kind == 'map') {\n                if (jsonValue === null) {\n                    continue;\n                }\n                // check input\n                this.assert(json_typings_1.isJsonObject(jsonValue), field.name, jsonValue);\n                // our target to put map entries into\n                const fieldObj = target[localName];\n                // read entries\n                for (const [jsonObjKey, jsonObjValue] of Object.entries(jsonValue)) {\n                    this.assert(jsonObjValue !== null, field.name + \" map value\", null);\n                    // read value\n                    let val;\n                    switch (field.V.kind) {\n                        case \"message\":\n                            val = field.V.T().internalJsonRead(jsonObjValue, options);\n                            break;\n                        case \"enum\":\n                            val = this.enum(field.V.T(), jsonObjValue, field.name, options.ignoreUnknownFields);\n                            if (val === false)\n                                continue;\n                            break;\n                        case \"scalar\":\n                            val = this.scalar(jsonObjValue, field.V.T, field.V.L, field.name);\n                            break;\n                    }\n                    this.assert(val !== undefined, field.name + \" map value\", jsonObjValue);\n                    // read key\n                    let key = jsonObjKey;\n                    if (field.K == reflection_info_1.ScalarType.BOOL)\n                        key = key == \"true\" ? true : key == \"false\" ? false : key;\n                    key = this.scalar(key, field.K, reflection_info_1.LongType.STRING, field.name).toString();\n                    fieldObj[key] = val;\n                }\n            }\n            else if (field.repeat) {\n                if (jsonValue === null)\n                    continue;\n                // check input\n                this.assert(Array.isArray(jsonValue), field.name, jsonValue);\n                // our target to put array entries into\n                const fieldArr = target[localName];\n                // read array entries\n                for (const jsonItem of jsonValue) {\n                    this.assert(jsonItem !== null, field.name, null);\n                    let val;\n                    switch (field.kind) {\n                        case \"message\":\n                            val = field.T().internalJsonRead(jsonItem, options);\n                            break;\n                        case \"enum\":\n                            val = this.enum(field.T(), jsonItem, field.name, options.ignoreUnknownFields);\n                            if (val === false)\n                                continue;\n                            break;\n                        case \"scalar\":\n                            val = this.scalar(jsonItem, field.T, field.L, field.name);\n                            break;\n                    }\n                    this.assert(val !== undefined, field.name, jsonValue);\n                    fieldArr.push(val);\n                }\n            }\n            else {\n                switch (field.kind) {\n                    case \"message\":\n                        if (jsonValue === null && field.T().typeName != 'google.protobuf.Value') {\n                            this.assert(field.oneof === undefined, field.name + \" (oneof member)\", null);\n                            continue;\n                        }\n                        target[localName] = field.T().internalJsonRead(jsonValue, options, target[localName]);\n                        break;\n                    case \"enum\":\n                        if (jsonValue === null)\n                            continue;\n                        let val = this.enum(field.T(), jsonValue, field.name, options.ignoreUnknownFields);\n                        if (val === false)\n                            continue;\n                        target[localName] = val;\n                        break;\n                    case \"scalar\":\n                        if (jsonValue === null)\n                            continue;\n                        target[localName] = this.scalar(jsonValue, field.T, field.L, field.name);\n                        break;\n                }\n            }\n        }\n    }\n    /**\n     * Returns `false` for unrecognized string representations.\n     *\n     * google.protobuf.NullValue accepts only JSON `null` (or the old `\"NULL_VALUE\"`).\n     */\n    enum(type, json, fieldName, ignoreUnknownFields) {\n        if (type[0] == 'google.protobuf.NullValue')\n            assert_1.assert(json === null || json === \"NULL_VALUE\", `Unable to parse field ${this.info.typeName}#${fieldName}, enum ${type[0]} only accepts null.`);\n        if (json === null)\n            // we require 0 to be default value for all enums\n            return 0;\n        switch (typeof json) {\n            case \"number\":\n                assert_1.assert(Number.isInteger(json), `Unable to parse field ${this.info.typeName}#${fieldName}, enum can only be integral number, got ${json}.`);\n                return json;\n            case \"string\":\n                let localEnumName = json;\n                if (type[2] && json.substring(0, type[2].length) === type[2])\n                    // lookup without the shared prefix\n                    localEnumName = json.substring(type[2].length);\n                let enumNumber = type[1][localEnumName];\n                if (typeof enumNumber === 'undefined' && ignoreUnknownFields) {\n                    return false;\n                }\n                assert_1.assert(typeof enumNumber == \"number\", `Unable to parse field ${this.info.typeName}#${fieldName}, enum ${type[0]} has no value for \"${json}\".`);\n                return enumNumber;\n        }\n        assert_1.assert(false, `Unable to parse field ${this.info.typeName}#${fieldName}, cannot parse enum value from ${typeof json}\".`);\n    }\n    scalar(json, type, longType, fieldName) {\n        let e;\n        try {\n            switch (type) {\n                // float, double: JSON value will be a number or one of the special string values \"NaN\", \"Infinity\", and \"-Infinity\".\n                // Either numbers or strings are accepted. Exponent notation is also accepted.\n                case reflection_info_1.ScalarType.DOUBLE:\n                case reflection_info_1.ScalarType.FLOAT:\n                    if (json === null)\n                        return .0;\n                    if (json === \"NaN\")\n                        return Number.NaN;\n                    if (json === \"Infinity\")\n                        return Number.POSITIVE_INFINITY;\n                    if (json === \"-Infinity\")\n                        return Number.NEGATIVE_INFINITY;\n                    if (json === \"\") {\n                        e = \"empty string\";\n                        break;\n                    }\n                    if (typeof json == \"string\" && json.trim().length !== json.length) {\n                        e = \"extra whitespace\";\n                        break;\n                    }\n                    if (typeof json != \"string\" && typeof json != \"number\") {\n                        break;\n                    }\n                    let float = Number(json);\n                    if (Number.isNaN(float)) {\n                        e = \"not a number\";\n                        break;\n                    }\n                    if (!Number.isFinite(float)) {\n                        // infinity and -infinity are handled by string representation above, so this is an error\n                        e = \"too large or small\";\n                        break;\n                    }\n                    if (type == reflection_info_1.ScalarType.FLOAT)\n                        assert_1.assertFloat32(float);\n                    return float;\n                // int32, fixed32, uint32: JSON value will be a decimal number. Either numbers or strings are accepted.\n                case reflection_info_1.ScalarType.INT32:\n                case reflection_info_1.ScalarType.FIXED32:\n                case reflection_info_1.ScalarType.SFIXED32:\n                case reflection_info_1.ScalarType.SINT32:\n                case reflection_info_1.ScalarType.UINT32:\n                    if (json === null)\n                        return 0;\n                    let int32;\n                    if (typeof json == \"number\")\n                        int32 = json;\n                    else if (json === \"\")\n                        e = \"empty string\";\n                    else if (typeof json == \"string\") {\n                        if (json.trim().length !== json.length)\n                            e = \"extra whitespace\";\n                        else\n                            int32 = Number(json);\n                    }\n                    if (int32 === undefined)\n                        break;\n                    if (type == reflection_info_1.ScalarType.UINT32)\n                        assert_1.assertUInt32(int32);\n                    else\n                        assert_1.assertInt32(int32);\n                    return int32;\n                // int64, fixed64, uint64: JSON value will be a decimal string. Either numbers or strings are accepted.\n                case reflection_info_1.ScalarType.INT64:\n                case reflection_info_1.ScalarType.SFIXED64:\n                case reflection_info_1.ScalarType.SINT64:\n                    if (json === null)\n                        return reflection_long_convert_1.reflectionLongConvert(pb_long_1.PbLong.ZERO, longType);\n                    if (typeof json != \"number\" && typeof json != \"string\")\n                        break;\n                    return reflection_long_convert_1.reflectionLongConvert(pb_long_1.PbLong.from(json), longType);\n                case reflection_info_1.ScalarType.FIXED64:\n                case reflection_info_1.ScalarType.UINT64:\n                    if (json === null)\n                        return reflection_long_convert_1.reflectionLongConvert(pb_long_1.PbULong.ZERO, longType);\n                    if (typeof json != \"number\" && typeof json != \"string\")\n                        break;\n                    return reflection_long_convert_1.reflectionLongConvert(pb_long_1.PbULong.from(json), longType);\n                // bool:\n                case reflection_info_1.ScalarType.BOOL:\n                    if (json === null)\n                        return false;\n                    if (typeof json !== \"boolean\")\n                        break;\n                    return json;\n                // string:\n                case reflection_info_1.ScalarType.STRING:\n                    if (json === null)\n                        return \"\";\n                    if (typeof json !== \"string\") {\n                        e = \"extra whitespace\";\n                        break;\n                    }\n                    try {\n                        encodeURIComponent(json);\n                    }\n                    catch (e) {\n                        e = \"invalid UTF8\";\n                        break;\n                    }\n                    return json;\n                // bytes: JSON value will be the data encoded as a string using standard base64 encoding with paddings.\n                // Either standard or URL-safe base64 encoding with/without paddings are accepted.\n                case reflection_info_1.ScalarType.BYTES:\n                    if (json === null || json === \"\")\n                        return new Uint8Array(0);\n                    if (typeof json !== 'string')\n                        break;\n                    return base64_1.base64decode(json);\n            }\n        }\n        catch (error) {\n            e = error.message;\n        }\n        this.assert(false, fieldName + (e ? \" - \" + e : \"\"), json);\n    }\n}\nexports.ReflectionJsonReader = ReflectionJsonReader;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReflectionJsonWriter = void 0;\nconst base64_1 = require(\"./base64\");\nconst pb_long_1 = require(\"./pb-long\");\nconst reflection_info_1 = require(\"./reflection-info\");\nconst assert_1 = require(\"./assert\");\n/**\n * Writes proto3 messages in canonical JSON format using reflection\n * information.\n *\n * https://developers.google.com/protocol-buffers/docs/proto3#json\n */\nclass ReflectionJsonWriter {\n    constructor(info) {\n        var _a;\n        this.fields = (_a = info.fields) !== null && _a !== void 0 ? _a : [];\n    }\n    /**\n     * Converts the message to a JSON object, based on the field descriptors.\n     */\n    write(message, options) {\n        const json = {}, source = message;\n        for (const field of this.fields) {\n            // field is not part of a oneof, simply write as is\n            if (!field.oneof) {\n                let jsonValue = this.field(field, source[field.localName], options);\n                if (jsonValue !== undefined)\n                    json[options.useProtoFieldName ? field.name : field.jsonName] = jsonValue;\n                continue;\n            }\n            // field is part of a oneof\n            const group = source[field.oneof];\n            if (group.oneofKind !== field.localName)\n                continue; // not selected, skip\n            const opt = field.kind == 'scalar' || field.kind == 'enum'\n                ? Object.assign(Object.assign({}, options), { emitDefaultValues: true }) : options;\n            let jsonValue = this.field(field, group[field.localName], opt);\n            assert_1.assert(jsonValue !== undefined);\n            json[options.useProtoFieldName ? field.name : field.jsonName] = jsonValue;\n        }\n        return json;\n    }\n    field(field, value, options) {\n        let jsonValue = undefined;\n        if (field.kind == 'map') {\n            assert_1.assert(typeof value == \"object\" && value !== null);\n            const jsonObj = {};\n            switch (field.V.kind) {\n                case \"scalar\":\n                    for (const [entryKey, entryValue] of Object.entries(value)) {\n                        const val = this.scalar(field.V.T, entryValue, field.name, false, true);\n                        assert_1.assert(val !== undefined);\n                        jsonObj[entryKey.toString()] = val; // JSON standard allows only (double quoted) string as property key\n                    }\n                    break;\n                case \"message\":\n                    const messageType = field.V.T();\n                    for (const [entryKey, entryValue] of Object.entries(value)) {\n                        const val = this.message(messageType, entryValue, field.name, options);\n                        assert_1.assert(val !== undefined);\n                        jsonObj[entryKey.toString()] = val; // JSON standard allows only (double quoted) string as property key\n                    }\n                    break;\n                case \"enum\":\n                    const enumInfo = field.V.T();\n                    for (const [entryKey, entryValue] of Object.entries(value)) {\n                        assert_1.assert(entryValue === undefined || typeof entryValue == 'number');\n                        const val = this.enum(enumInfo, entryValue, field.name, false, true, options.enumAsInteger);\n                        assert_1.assert(val !== undefined);\n                        jsonObj[entryKey.toString()] = val; // JSON standard allows only (double quoted) string as property key\n                    }\n                    break;\n            }\n            if (options.emitDefaultValues || Object.keys(jsonObj).length > 0)\n                jsonValue = jsonObj;\n        }\n        else if (field.repeat) {\n            assert_1.assert(Array.isArray(value));\n            const jsonArr = [];\n            switch (field.kind) {\n                case \"scalar\":\n                    for (let i = 0; i < value.length; i++) {\n                        const val = this.scalar(field.T, value[i], field.name, field.opt, true);\n                        assert_1.assert(val !== undefined);\n                        jsonArr.push(val);\n                    }\n                    break;\n                case \"enum\":\n                    const enumInfo = field.T();\n                    for (let i = 0; i < value.length; i++) {\n                        assert_1.assert(value[i] === undefined || typeof value[i] == 'number');\n                        const val = this.enum(enumInfo, value[i], field.name, field.opt, true, options.enumAsInteger);\n                        assert_1.assert(val !== undefined);\n                        jsonArr.push(val);\n                    }\n                    break;\n                case \"message\":\n                    const messageType = field.T();\n                    for (let i = 0; i < value.length; i++) {\n                        const val = this.message(messageType, value[i], field.name, options);\n                        assert_1.assert(val !== undefined);\n                        jsonArr.push(val);\n                    }\n                    break;\n            }\n            // add converted array to json output\n            if (options.emitDefaultValues || jsonArr.length > 0 || options.emitDefaultValues)\n                jsonValue = jsonArr;\n        }\n        else {\n            switch (field.kind) {\n                case \"scalar\":\n                    jsonValue = this.scalar(field.T, value, field.name, field.opt, options.emitDefaultValues);\n                    break;\n                case \"enum\":\n                    jsonValue = this.enum(field.T(), value, field.name, field.opt, options.emitDefaultValues, options.enumAsInteger);\n                    break;\n                case \"message\":\n                    jsonValue = this.message(field.T(), value, field.name, options);\n                    break;\n            }\n        }\n        return jsonValue;\n    }\n    /**\n     * Returns `null` as the default for google.protobuf.NullValue.\n     */\n    enum(type, value, fieldName, optional, emitDefaultValues, enumAsInteger) {\n        if (type[0] == 'google.protobuf.NullValue')\n            return !emitDefaultValues && !optional ? undefined : null;\n        if (value === undefined) {\n            assert_1.assert(optional);\n            return undefined;\n        }\n        if (value === 0 && !emitDefaultValues && !optional)\n            // we require 0 to be default value for all enums\n            return undefined;\n        assert_1.assert(typeof value == 'number');\n        assert_1.assert(Number.isInteger(value));\n        if (enumAsInteger || !type[1].hasOwnProperty(value))\n            // if we don't now the enum value, just return the number\n            return value;\n        if (type[2])\n            // restore the dropped prefix\n            return type[2] + type[1][value];\n        return type[1][value];\n    }\n    message(type, value, fieldName, options) {\n        if (value === undefined)\n            return options.emitDefaultValues ? null : undefined;\n        return type.internalJsonWrite(value, options);\n    }\n    scalar(type, value, fieldName, optional, emitDefaultValues) {\n        if (value === undefined) {\n            assert_1.assert(optional);\n            return undefined;\n        }\n        const ed = emitDefaultValues || optional;\n        // noinspection FallThroughInSwitchStatementJS\n        switch (type) {\n            // int32, fixed32, uint32: JSON value will be a decimal number. Either numbers or strings are accepted.\n            case reflection_info_1.ScalarType.INT32:\n            case reflection_info_1.ScalarType.SFIXED32:\n            case reflection_info_1.ScalarType.SINT32:\n                if (value === 0)\n                    return ed ? 0 : undefined;\n                assert_1.assertInt32(value);\n                return value;\n            case reflection_info_1.ScalarType.FIXED32:\n            case reflection_info_1.ScalarType.UINT32:\n                if (value === 0)\n                    return ed ? 0 : undefined;\n                assert_1.assertUInt32(value);\n                return value;\n            // float, double: JSON value will be a number or one of the special string values \"NaN\", \"Infinity\", and \"-Infinity\".\n            // Either numbers or strings are accepted. Exponent notation is also accepted.\n            case reflection_info_1.ScalarType.FLOAT:\n                assert_1.assertFloat32(value);\n            case reflection_info_1.ScalarType.DOUBLE:\n                if (value === 0)\n                    return ed ? 0 : undefined;\n                assert_1.assert(typeof value == 'number');\n                if (Number.isNaN(value))\n                    return 'NaN';\n                if (value === Number.POSITIVE_INFINITY)\n                    return 'Infinity';\n                if (value === Number.NEGATIVE_INFINITY)\n                    return '-Infinity';\n                return value;\n            // string:\n            case reflection_info_1.ScalarType.STRING:\n                if (value === \"\")\n                    return ed ? '' : undefined;\n                assert_1.assert(typeof value == 'string');\n                return value;\n            // bool:\n            case reflection_info_1.ScalarType.BOOL:\n                if (value === false)\n                    return ed ? false : undefined;\n                assert_1.assert(typeof value == 'boolean');\n                return value;\n            // JSON value will be a decimal string. Either numbers or strings are accepted.\n            case reflection_info_1.ScalarType.UINT64:\n            case reflection_info_1.ScalarType.FIXED64:\n                assert_1.assert(typeof value == 'number' || typeof value == 'string' || typeof value == 'bigint');\n                let ulong = pb_long_1.PbULong.from(value);\n                if (ulong.isZero() && !ed)\n                    return undefined;\n                return ulong.toString();\n            // JSON value will be a decimal string. Either numbers or strings are accepted.\n            case reflection_info_1.ScalarType.INT64:\n            case reflection_info_1.ScalarType.SFIXED64:\n            case reflection_info_1.ScalarType.SINT64:\n                assert_1.assert(typeof value == 'number' || typeof value == 'string' || typeof value == 'bigint');\n                let long = pb_long_1.PbLong.from(value);\n                if (long.isZero() && !ed)\n                    return undefined;\n                return long.toString();\n            // bytes: JSON value will be the data encoded as a string using standard base64 encoding with paddings.\n            // Either standard or URL-safe base64 encoding with/without paddings are accepted.\n            case reflection_info_1.ScalarType.BYTES:\n                assert_1.assert(value instanceof Uint8Array);\n                if (!value.byteLength)\n                    return ed ? \"\" : undefined;\n                return base64_1.base64encode(value);\n        }\n    }\n}\nexports.ReflectionJsonWriter = ReflectionJsonWriter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reflectionScalarDefault = void 0;\nconst reflection_info_1 = require(\"./reflection-info\");\nconst reflection_long_convert_1 = require(\"./reflection-long-convert\");\nconst pb_long_1 = require(\"./pb-long\");\n/**\n * Creates the default value for a scalar type.\n */\nfunction reflectionScalarDefault(type, longType = reflection_info_1.LongType.STRING) {\n    switch (type) {\n        case reflection_info_1.ScalarType.BOOL:\n            return false;\n        case reflection_info_1.ScalarType.UINT64:\n        case reflection_info_1.ScalarType.FIXED64:\n            return reflection_long_convert_1.reflectionLongConvert(pb_long_1.PbULong.ZERO, longType);\n        case reflection_info_1.ScalarType.INT64:\n        case reflection_info_1.ScalarType.SFIXED64:\n        case reflection_info_1.ScalarType.SINT64:\n            return reflection_long_convert_1.reflectionLongConvert(pb_long_1.PbLong.ZERO, longType);\n        case reflection_info_1.ScalarType.DOUBLE:\n        case reflection_info_1.ScalarType.FLOAT:\n            return 0.0;\n        case reflection_info_1.ScalarType.BYTES:\n            return new Uint8Array(0);\n        case reflection_info_1.ScalarType.STRING:\n            return \"\";\n        default:\n            // case ScalarType.INT32:\n            // case ScalarType.UINT32:\n            // case ScalarType.SINT32:\n            // case ScalarType.FIXED32:\n            // case ScalarType.SFIXED32:\n            return 0;\n    }\n}\nexports.reflectionScalarDefault = reflectionScalarDefault;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReflectionBinaryReader = void 0;\nconst binary_format_contract_1 = require(\"./binary-format-contract\");\nconst reflection_info_1 = require(\"./reflection-info\");\nconst reflection_long_convert_1 = require(\"./reflection-long-convert\");\nconst reflection_scalar_default_1 = require(\"./reflection-scalar-default\");\n/**\n * Reads proto3 messages in binary format using reflection information.\n *\n * https://developers.google.com/protocol-buffers/docs/encoding\n */\nclass ReflectionBinaryReader {\n    constructor(info) {\n        this.info = info;\n    }\n    prepare() {\n        var _a;\n        if (!this.fieldNoToField) {\n            const fieldsInput = (_a = this.info.fields) !== null && _a !== void 0 ? _a : [];\n            this.fieldNoToField = new Map(fieldsInput.map(field => [field.no, field]));\n        }\n    }\n    /**\n     * Reads a message from binary format into the target message.\n     *\n     * Repeated fields are appended. Map entries are added, overwriting\n     * existing keys.\n     *\n     * If a message field is already present, it will be merged with the\n     * new data.\n     */\n    read(reader, message, options, length) {\n        this.prepare();\n        const end = length === undefined ? reader.len : reader.pos + length;\n        while (reader.pos < end) {\n            // read the tag and find the field\n            const [fieldNo, wireType] = reader.tag(), field = this.fieldNoToField.get(fieldNo);\n            if (!field) {\n                let u = options.readUnknownField;\n                if (u == \"throw\")\n                    throw new Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.info.typeName}`);\n                let d = reader.skip(wireType);\n                if (u !== false)\n                    (u === true ? binary_format_contract_1.UnknownFieldHandler.onRead : u)(this.info.typeName, message, fieldNo, wireType, d);\n                continue;\n            }\n            // target object for the field we are reading\n            let target = message, repeated = field.repeat, localName = field.localName;\n            // if field is member of oneof ADT, use ADT as target\n            if (field.oneof) {\n                target = target[field.oneof];\n                // if other oneof member selected, set new ADT\n                if (target.oneofKind !== localName)\n                    target = message[field.oneof] = {\n                        oneofKind: localName\n                    };\n            }\n            // we have handled oneof above, we just have read the value into `target[localName]`\n            switch (field.kind) {\n                case \"scalar\":\n                case \"enum\":\n                    let T = field.kind == \"enum\" ? reflection_info_1.ScalarType.INT32 : field.T;\n                    let L = field.kind == \"scalar\" ? field.L : undefined;\n                    if (repeated) {\n                        let arr = target[localName]; // safe to assume presence of array, oneof cannot contain repeated values\n                        if (wireType == binary_format_contract_1.WireType.LengthDelimited && T != reflection_info_1.ScalarType.STRING && T != reflection_info_1.ScalarType.BYTES) {\n                            let e = reader.uint32() + reader.pos;\n                            while (reader.pos < e)\n                                arr.push(this.scalar(reader, T, L));\n                        }\n                        else\n                            arr.push(this.scalar(reader, T, L));\n                    }\n                    else\n                        target[localName] = this.scalar(reader, T, L);\n                    break;\n                case \"message\":\n                    if (repeated) {\n                        let arr = target[localName]; // safe to assume presence of array, oneof cannot contain repeated values\n                        let msg = field.T().internalBinaryRead(reader, reader.uint32(), options);\n                        arr.push(msg);\n                    }\n                    else\n                        target[localName] = field.T().internalBinaryRead(reader, reader.uint32(), options, target[localName]);\n                    break;\n                case \"map\":\n                    let [mapKey, mapVal] = this.mapEntry(field, reader, options);\n                    // safe to assume presence of map object, oneof cannot contain repeated values\n                    target[localName][mapKey] = mapVal;\n                    break;\n            }\n        }\n    }\n    /**\n     * Read a map field, expecting key field = 1, value field = 2\n     */\n    mapEntry(field, reader, options) {\n        let length = reader.uint32();\n        let end = reader.pos + length;\n        let key = undefined; // javascript only allows number or string for object properties\n        let val = undefined;\n        while (reader.pos < end) {\n            let [fieldNo, wireType] = reader.tag();\n            switch (fieldNo) {\n                case 1:\n                    if (field.K == reflection_info_1.ScalarType.BOOL)\n                        key = reader.bool().toString();\n                    else\n                        // long types are read as string, number types are okay as number\n                        key = this.scalar(reader, field.K, reflection_info_1.LongType.STRING);\n                    break;\n                case 2:\n                    switch (field.V.kind) {\n                        case \"scalar\":\n                            val = this.scalar(reader, field.V.T, field.V.L);\n                            break;\n                        case \"enum\":\n                            val = reader.int32();\n                            break;\n                        case \"message\":\n                            val = field.V.T().internalBinaryRead(reader, reader.uint32(), options);\n                            break;\n                    }\n                    break;\n                default:\n                    throw new Error(`Unknown field ${fieldNo} (wire type ${wireType}) in map entry for ${this.info.typeName}#${field.name}`);\n            }\n        }\n        if (key === undefined) {\n            let keyRaw = reflection_scalar_default_1.reflectionScalarDefault(field.K);\n            key = field.K == reflection_info_1.ScalarType.BOOL ? keyRaw.toString() : keyRaw;\n        }\n        if (val === undefined)\n            switch (field.V.kind) {\n                case \"scalar\":\n                    val = reflection_scalar_default_1.reflectionScalarDefault(field.V.T, field.V.L);\n                    break;\n                case \"enum\":\n                    val = 0;\n                    break;\n                case \"message\":\n                    val = field.V.T().create();\n                    break;\n            }\n        return [key, val];\n    }\n    scalar(reader, type, longType) {\n        switch (type) {\n            case reflection_info_1.ScalarType.INT32:\n                return reader.int32();\n            case reflection_info_1.ScalarType.STRING:\n                return reader.string();\n            case reflection_info_1.ScalarType.BOOL:\n                return reader.bool();\n            case reflection_info_1.ScalarType.DOUBLE:\n                return reader.double();\n            case reflection_info_1.ScalarType.FLOAT:\n                return reader.float();\n            case reflection_info_1.ScalarType.INT64:\n                return reflection_long_convert_1.reflectionLongConvert(reader.int64(), longType);\n            case reflection_info_1.ScalarType.UINT64:\n                return reflection_long_convert_1.reflectionLongConvert(reader.uint64(), longType);\n            case reflection_info_1.ScalarType.FIXED64:\n                return reflection_long_convert_1.reflectionLongConvert(reader.fixed64(), longType);\n            case reflection_info_1.ScalarType.FIXED32:\n                return reader.fixed32();\n            case reflection_info_1.ScalarType.BYTES:\n                return reader.bytes();\n            case reflection_info_1.ScalarType.UINT32:\n                return reader.uint32();\n            case reflection_info_1.ScalarType.SFIXED32:\n                return reader.sfixed32();\n            case reflection_info_1.ScalarType.SFIXED64:\n                return reflection_long_convert_1.reflectionLongConvert(reader.sfixed64(), longType);\n            case reflection_info_1.ScalarType.SINT32:\n                return reader.sint32();\n            case reflection_info_1.ScalarType.SINT64:\n                return reflection_long_convert_1.reflectionLongConvert(reader.sint64(), longType);\n        }\n    }\n}\nexports.ReflectionBinaryReader = ReflectionBinaryReader;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReflectionBinaryWriter = void 0;\nconst binary_format_contract_1 = require(\"./binary-format-contract\");\nconst reflection_info_1 = require(\"./reflection-info\");\nconst assert_1 = require(\"./assert\");\nconst pb_long_1 = require(\"./pb-long\");\n/**\n * Writes proto3 messages in binary format using reflection information.\n *\n * https://developers.google.com/protocol-buffers/docs/encoding\n */\nclass ReflectionBinaryWriter {\n    constructor(info) {\n        this.info = info;\n    }\n    prepare() {\n        if (!this.fields) {\n            const fieldsInput = this.info.fields ? this.info.fields.concat() : [];\n            this.fields = fieldsInput.sort((a, b) => a.no - b.no);\n        }\n    }\n    /**\n     * Writes the message to binary format.\n     */\n    write(message, writer, options) {\n        this.prepare();\n        for (const field of this.fields) {\n            let value, // this will be our field value, whether it is member of a oneof or not\n            emitDefault, // whether we emit the default value (only true for oneof members)\n            repeated = field.repeat, localName = field.localName;\n            // handle oneof ADT\n            if (field.oneof) {\n                const group = message[field.oneof];\n                if (group.oneofKind !== localName)\n                    continue; // if field is not selected, skip\n                value = group[localName];\n                emitDefault = true;\n            }\n            else {\n                value = message[localName];\n                emitDefault = false;\n            }\n            // we have handled oneof above. we just have to honor `emitDefault`.\n            switch (field.kind) {\n                case \"scalar\":\n                case \"enum\":\n                    let T = field.kind == \"enum\" ? reflection_info_1.ScalarType.INT32 : field.T;\n                    if (repeated) {\n                        assert_1.assert(Array.isArray(value));\n                        if (repeated == reflection_info_1.RepeatType.PACKED)\n                            this.packed(writer, T, field.no, value);\n                        else\n                            for (const item of value)\n                                this.scalar(writer, T, field.no, item, true);\n                    }\n                    else if (value === undefined)\n                        assert_1.assert(field.opt);\n                    else\n                        this.scalar(writer, T, field.no, value, emitDefault || field.opt);\n                    break;\n                case \"message\":\n                    if (repeated) {\n                        assert_1.assert(Array.isArray(value));\n                        for (const item of value)\n                            this.message(writer, options, field.T(), field.no, item);\n                    }\n                    else {\n                        this.message(writer, options, field.T(), field.no, value);\n                    }\n                    break;\n                case \"map\":\n                    assert_1.assert(typeof value == 'object' && value !== null);\n                    for (const [key, val] of Object.entries(value))\n                        this.mapEntry(writer, options, field, key, val);\n                    break;\n            }\n        }\n        let u = options.writeUnknownFields;\n        if (u !== false)\n            (u === true ? binary_format_contract_1.UnknownFieldHandler.onWrite : u)(this.info.typeName, message, writer);\n    }\n    mapEntry(writer, options, field, key, value) {\n        writer.tag(field.no, binary_format_contract_1.WireType.LengthDelimited);\n        writer.fork();\n        // javascript only allows number or string for object properties\n        // we convert from our representation to the protobuf type\n        let keyValue = key;\n        switch (field.K) {\n            case reflection_info_1.ScalarType.INT32:\n            case reflection_info_1.ScalarType.FIXED32:\n            case reflection_info_1.ScalarType.UINT32:\n            case reflection_info_1.ScalarType.SFIXED32:\n            case reflection_info_1.ScalarType.SINT32:\n                keyValue = Number.parseInt(key);\n                break;\n            case reflection_info_1.ScalarType.BOOL:\n                assert_1.assert(key == 'true' || key == 'false');\n                keyValue = key == 'true';\n                break;\n        }\n        // write key, expecting key field number = 1\n        this.scalar(writer, field.K, 1, keyValue, true);\n        // write value, expecting value field number = 2\n        switch (field.V.kind) {\n            case 'scalar':\n                this.scalar(writer, field.V.T, 2, value, true);\n                break;\n            case 'enum':\n                this.scalar(writer, reflection_info_1.ScalarType.INT32, 2, value, true);\n                break;\n            case 'message':\n                this.message(writer, options, field.V.T(), 2, value);\n                break;\n        }\n        writer.join();\n    }\n    message(writer, options, handler, fieldNo, value) {\n        if (value === undefined)\n            return;\n        handler.internalBinaryWrite(value, writer.tag(fieldNo, binary_format_contract_1.WireType.LengthDelimited).fork(), options);\n        writer.join();\n    }\n    /**\n     * Write a single scalar value.\n     */\n    scalar(writer, type, fieldNo, value, emitDefault) {\n        let [wireType, method, isDefault] = this.scalarInfo(type, value);\n        if (!isDefault || emitDefault) {\n            writer.tag(fieldNo, wireType);\n            writer[method](value);\n        }\n    }\n    /**\n     * Write an array of scalar values in packed format.\n     */\n    packed(writer, type, fieldNo, value) {\n        if (!value.length)\n            return;\n        assert_1.assert(type !== reflection_info_1.ScalarType.BYTES && type !== reflection_info_1.ScalarType.STRING);\n        // write tag\n        writer.tag(fieldNo, binary_format_contract_1.WireType.LengthDelimited);\n        // begin length-delimited\n        writer.fork();\n        // write values without tags\n        let [, method,] = this.scalarInfo(type);\n        for (let i = 0; i < value.length; i++)\n            writer[method](value[i]);\n        // end length delimited\n        writer.join();\n    }\n    /**\n     * Get information for writing a scalar value.\n     *\n     * Returns tuple:\n     * [0]: appropriate WireType\n     * [1]: name of the appropriate method of IBinaryWriter\n     * [2]: whether the given value is a default value\n     *\n     * If argument `value` is omitted, [2] is always false.\n     */\n    scalarInfo(type, value) {\n        let t = binary_format_contract_1.WireType.Varint;\n        let m;\n        let i = value === undefined;\n        let d = value === 0;\n        switch (type) {\n            case reflection_info_1.ScalarType.INT32:\n                m = \"int32\";\n                break;\n            case reflection_info_1.ScalarType.STRING:\n                d = i || !value.length;\n                t = binary_format_contract_1.WireType.LengthDelimited;\n                m = \"string\";\n                break;\n            case reflection_info_1.ScalarType.BOOL:\n                d = value === false;\n                m = \"bool\";\n                break;\n            case reflection_info_1.ScalarType.UINT32:\n                m = \"uint32\";\n                break;\n            case reflection_info_1.ScalarType.DOUBLE:\n                t = binary_format_contract_1.WireType.Bit64;\n                m = \"double\";\n                break;\n            case reflection_info_1.ScalarType.FLOAT:\n                t = binary_format_contract_1.WireType.Bit32;\n                m = \"float\";\n                break;\n            case reflection_info_1.ScalarType.INT64:\n                d = i || pb_long_1.PbLong.from(value).isZero();\n                m = \"int64\";\n                break;\n            case reflection_info_1.ScalarType.UINT64:\n                d = i || pb_long_1.PbULong.from(value).isZero();\n                m = \"uint64\";\n                break;\n            case reflection_info_1.ScalarType.FIXED64:\n                d = i || pb_long_1.PbULong.from(value).isZero();\n                t = binary_format_contract_1.WireType.Bit64;\n                m = \"fixed64\";\n                break;\n            case reflection_info_1.ScalarType.BYTES:\n                d = i || !value.byteLength;\n                t = binary_format_contract_1.WireType.LengthDelimited;\n                m = \"bytes\";\n                break;\n            case reflection_info_1.ScalarType.FIXED32:\n                t = binary_format_contract_1.WireType.Bit32;\n                m = \"fixed32\";\n                break;\n            case reflection_info_1.ScalarType.SFIXED32:\n                t = binary_format_contract_1.WireType.Bit32;\n                m = \"sfixed32\";\n                break;\n            case reflection_info_1.ScalarType.SFIXED64:\n                d = i || pb_long_1.PbLong.from(value).isZero();\n                t = binary_format_contract_1.WireType.Bit64;\n                m = \"sfixed64\";\n                break;\n            case reflection_info_1.ScalarType.SINT32:\n                m = \"sint32\";\n                break;\n            case reflection_info_1.ScalarType.SINT64:\n                d = i || pb_long_1.PbLong.from(value).isZero();\n                m = \"sint64\";\n                break;\n        }\n        return [t, m, i || d];\n    }\n}\nexports.ReflectionBinaryWriter = ReflectionBinaryWriter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reflectionCreate = void 0;\nconst reflection_scalar_default_1 = require(\"./reflection-scalar-default\");\nconst message_type_contract_1 = require(\"./message-type-contract\");\n/**\n * Creates an instance of the generic message, using the field\n * information.\n */\nfunction reflectionCreate(type) {\n    /**\n     * This ternary can be removed in the next major version.\n     * The `Object.create()` code path utilizes a new `messagePrototype`\n     * property on the `IMessageType` which has this same `MESSAGE_TYPE`\n     * non-enumerable property on it. Doing it this way means that we only\n     * pay the cost of `Object.defineProperty()` once per `IMessageType`\n     * class of once per \"instance\". The falsy code path is only provided\n     * for backwards compatibility in cases where the runtime library is\n     * updated without also updating the generated code.\n     */\n    const msg = type.messagePrototype\n        ? Object.create(type.messagePrototype)\n        : Object.defineProperty({}, message_type_contract_1.MESSAGE_TYPE, { value: type });\n    for (let field of type.fields) {\n        let name = field.localName;\n        if (field.opt)\n            continue;\n        if (field.oneof)\n            msg[field.oneof] = { oneofKind: undefined };\n        else if (field.repeat)\n            msg[name] = [];\n        else\n            switch (field.kind) {\n                case \"scalar\":\n                    msg[name] = reflection_scalar_default_1.reflectionScalarDefault(field.T, field.L);\n                    break;\n                case \"enum\":\n                    // we require 0 to be default value for all enums\n                    msg[name] = 0;\n                    break;\n                case \"map\":\n                    msg[name] = {};\n                    break;\n            }\n    }\n    return msg;\n}\nexports.reflectionCreate = reflectionCreate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reflectionMergePartial = void 0;\n/**\n * Copy partial data into the target message.\n *\n * If a singular scalar or enum field is present in the source, it\n * replaces the field in the target.\n *\n * If a singular message field is present in the source, it is merged\n * with the target field by calling mergePartial() of the responsible\n * message type.\n *\n * If a repeated field is present in the source, its values replace\n * all values in the target array, removing extraneous values.\n * Repeated message fields are copied, not merged.\n *\n * If a map field is present in the source, entries are added to the\n * target map, replacing entries with the same key. Entries that only\n * exist in the target remain. Entries with message values are copied,\n * not merged.\n *\n * Note that this function differs from protobuf merge semantics,\n * which appends repeated fields.\n */\nfunction reflectionMergePartial(info, target, source) {\n    let fieldValue, // the field value we are working with\n    input = source, output; // where we want our field value to go\n    for (let field of info.fields) {\n        let name = field.localName;\n        if (field.oneof) {\n            const group = input[field.oneof]; // this is the oneof`s group in the source\n            if ((group === null || group === void 0 ? void 0 : group.oneofKind) == undefined) { // the user is free to omit\n                continue; // we skip this field, and all other members too\n            }\n            fieldValue = group[name]; // our value comes from the the oneof group of the source\n            output = target[field.oneof]; // and our output is the oneof group of the target\n            output.oneofKind = group.oneofKind; // always update discriminator\n            if (fieldValue == undefined) {\n                delete output[name]; // remove any existing value\n                continue; // skip further work on field\n            }\n        }\n        else {\n            fieldValue = input[name]; // we are using the source directly\n            output = target; // we want our field value to go directly into the target\n            if (fieldValue == undefined) {\n                continue; // skip further work on field, existing value is used as is\n            }\n        }\n        if (field.repeat)\n            output[name].length = fieldValue.length; // resize target array to match source array\n        // now we just work with `fieldValue` and `output` to merge the value\n        switch (field.kind) {\n            case \"scalar\":\n            case \"enum\":\n                if (field.repeat)\n                    for (let i = 0; i < fieldValue.length; i++)\n                        output[name][i] = fieldValue[i]; // not a reference type\n                else\n                    output[name] = fieldValue; // not a reference type\n                break;\n            case \"message\":\n                let T = field.T();\n                if (field.repeat)\n                    for (let i = 0; i < fieldValue.length; i++)\n                        output[name][i] = T.create(fieldValue[i]);\n                else if (output[name] === undefined)\n                    output[name] = T.create(fieldValue); // nothing to merge with\n                else\n                    T.mergePartial(output[name], fieldValue);\n                break;\n            case \"map\":\n                // Map and repeated fields are simply overwritten, not appended or merged\n                switch (field.V.kind) {\n                    case \"scalar\":\n                    case \"enum\":\n                        Object.assign(output[name], fieldValue); // elements are not reference types\n                        break;\n                    case \"message\":\n                        let T = field.V.T();\n                        for (let k of Object.keys(fieldValue))\n                            output[name][k] = T.create(fieldValue[k]);\n                        break;\n                }\n                break;\n        }\n    }\n}\nexports.reflectionMergePartial = reflectionMergePartial;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reflectionEquals = void 0;\nconst reflection_info_1 = require(\"./reflection-info\");\n/**\n * Determines whether two message of the same type have the same field values.\n * Checks for deep equality, traversing repeated fields, oneof groups, maps\n * and messages recursively.\n * Will also return true if both messages are `undefined`.\n */\nfunction reflectionEquals(info, a, b) {\n    if (a === b)\n        return true;\n    if (!a || !b)\n        return false;\n    for (let field of info.fields) {\n        let localName = field.localName;\n        let val_a = field.oneof ? a[field.oneof][localName] : a[localName];\n        let val_b = field.oneof ? b[field.oneof][localName] : b[localName];\n        switch (field.kind) {\n            case \"enum\":\n            case \"scalar\":\n                let t = field.kind == \"enum\" ? reflection_info_1.ScalarType.INT32 : field.T;\n                if (!(field.repeat\n                    ? repeatedPrimitiveEq(t, val_a, val_b)\n                    : primitiveEq(t, val_a, val_b)))\n                    return false;\n                break;\n            case \"map\":\n                if (!(field.V.kind == \"message\"\n                    ? repeatedMsgEq(field.V.T(), objectValues(val_a), objectValues(val_b))\n                    : repeatedPrimitiveEq(field.V.kind == \"enum\" ? reflection_info_1.ScalarType.INT32 : field.V.T, objectValues(val_a), objectValues(val_b))))\n                    return false;\n                break;\n            case \"message\":\n                let T = field.T();\n                if (!(field.repeat\n                    ? repeatedMsgEq(T, val_a, val_b)\n                    : T.equals(val_a, val_b)))\n                    return false;\n                break;\n        }\n    }\n    return true;\n}\nexports.reflectionEquals = reflectionEquals;\nconst objectValues = Object.values;\nfunction primitiveEq(type, a, b) {\n    if (a === b)\n        return true;\n    if (type !== reflection_info_1.ScalarType.BYTES)\n        return false;\n    let ba = a;\n    let bb = b;\n    if (ba.length !== bb.length)\n        return false;\n    for (let i = 0; i < ba.length; i++)\n        if (ba[i] != bb[i])\n            return false;\n    return true;\n}\nfunction repeatedPrimitiveEq(type, a, b) {\n    if (a.length !== b.length)\n        return false;\n    for (let i = 0; i < a.length; i++)\n        if (!primitiveEq(type, a[i], b[i]))\n            return false;\n    return true;\n}\nfunction repeatedMsgEq(type, a, b) {\n    if (a.length !== b.length)\n        return false;\n    for (let i = 0; i < a.length; i++)\n        if (!type.equals(a[i], b[i]))\n            return false;\n    return true;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MessageType = void 0;\nconst message_type_contract_1 = require(\"./message-type-contract\");\nconst reflection_info_1 = require(\"./reflection-info\");\nconst reflection_type_check_1 = require(\"./reflection-type-check\");\nconst reflection_json_reader_1 = require(\"./reflection-json-reader\");\nconst reflection_json_writer_1 = require(\"./reflection-json-writer\");\nconst reflection_binary_reader_1 = require(\"./reflection-binary-reader\");\nconst reflection_binary_writer_1 = require(\"./reflection-binary-writer\");\nconst reflection_create_1 = require(\"./reflection-create\");\nconst reflection_merge_partial_1 = require(\"./reflection-merge-partial\");\nconst json_typings_1 = require(\"./json-typings\");\nconst json_format_contract_1 = require(\"./json-format-contract\");\nconst reflection_equals_1 = require(\"./reflection-equals\");\nconst binary_writer_1 = require(\"./binary-writer\");\nconst binary_reader_1 = require(\"./binary-reader\");\nconst baseDescriptors = Object.getOwnPropertyDescriptors(Object.getPrototypeOf({}));\nconst messageTypeDescriptor = baseDescriptors[message_type_contract_1.MESSAGE_TYPE] = {};\n/**\n * This standard message type provides reflection-based\n * operations to work with a message.\n */\nclass MessageType {\n    constructor(name, fields, options) {\n        this.defaultCheckDepth = 16;\n        this.typeName = name;\n        this.fields = fields.map(reflection_info_1.normalizeFieldInfo);\n        this.options = options !== null && options !== void 0 ? options : {};\n        messageTypeDescriptor.value = this;\n        this.messagePrototype = Object.create(null, baseDescriptors);\n        this.refTypeCheck = new reflection_type_check_1.ReflectionTypeCheck(this);\n        this.refJsonReader = new reflection_json_reader_1.ReflectionJsonReader(this);\n        this.refJsonWriter = new reflection_json_writer_1.ReflectionJsonWriter(this);\n        this.refBinReader = new reflection_binary_reader_1.ReflectionBinaryReader(this);\n        this.refBinWriter = new reflection_binary_writer_1.ReflectionBinaryWriter(this);\n    }\n    create(value) {\n        let message = reflection_create_1.reflectionCreate(this);\n        if (value !== undefined) {\n            reflection_merge_partial_1.reflectionMergePartial(this, message, value);\n        }\n        return message;\n    }\n    /**\n     * Clone the message.\n     *\n     * Unknown fields are discarded.\n     */\n    clone(message) {\n        let copy = this.create();\n        reflection_merge_partial_1.reflectionMergePartial(this, copy, message);\n        return copy;\n    }\n    /**\n     * Determines whether two message of the same type have the same field values.\n     * Checks for deep equality, traversing repeated fields, oneof groups, maps\n     * and messages recursively.\n     * Will also return true if both messages are `undefined`.\n     */\n    equals(a, b) {\n        return reflection_equals_1.reflectionEquals(this, a, b);\n    }\n    /**\n     * Is the given value assignable to our message type\n     * and contains no [excess properties](https://www.typescriptlang.org/docs/handbook/interfaces.html#excess-property-checks)?\n     */\n    is(arg, depth = this.defaultCheckDepth) {\n        return this.refTypeCheck.is(arg, depth, false);\n    }\n    /**\n     * Is the given value assignable to our message type,\n     * regardless of [excess properties](https://www.typescriptlang.org/docs/handbook/interfaces.html#excess-property-checks)?\n     */\n    isAssignable(arg, depth = this.defaultCheckDepth) {\n        return this.refTypeCheck.is(arg, depth, true);\n    }\n    /**\n     * Copy partial data into the target message.\n     */\n    mergePartial(target, source) {\n        reflection_merge_partial_1.reflectionMergePartial(this, target, source);\n    }\n    /**\n     * Create a new message from binary format.\n     */\n    fromBinary(data, options) {\n        let opt = binary_reader_1.binaryReadOptions(options);\n        return this.internalBinaryRead(opt.readerFactory(data), data.byteLength, opt);\n    }\n    /**\n     * Read a new message from a JSON value.\n     */\n    fromJson(json, options) {\n        return this.internalJsonRead(json, json_format_contract_1.jsonReadOptions(options));\n    }\n    /**\n     * Read a new message from a JSON string.\n     * This is equivalent to `T.fromJson(JSON.parse(json))`.\n     */\n    fromJsonString(json, options) {\n        let value = JSON.parse(json);\n        return this.fromJson(value, options);\n    }\n    /**\n     * Write the message to canonical JSON value.\n     */\n    toJson(message, options) {\n        return this.internalJsonWrite(message, json_format_contract_1.jsonWriteOptions(options));\n    }\n    /**\n     * Convert the message to canonical JSON string.\n     * This is equivalent to `JSON.stringify(T.toJson(t))`\n     */\n    toJsonString(message, options) {\n        var _a;\n        let value = this.toJson(message, options);\n        return JSON.stringify(value, null, (_a = options === null || options === void 0 ? void 0 : options.prettySpaces) !== null && _a !== void 0 ? _a : 0);\n    }\n    /**\n     * Write the message to binary format.\n     */\n    toBinary(message, options) {\n        let opt = binary_writer_1.binaryWriteOptions(options);\n        return this.internalBinaryWrite(message, opt.writerFactory(), opt).finish();\n    }\n    /**\n     * This is an internal method. If you just want to read a message from\n     * JSON, use `fromJson()` or `fromJsonString()`.\n     *\n     * Reads JSON value and merges the fields into the target\n     * according to protobuf rules. If the target is omitted,\n     * a new instance is created first.\n     */\n    internalJsonRead(json, options, target) {\n        if (json !== null && typeof json == \"object\" && !Array.isArray(json)) {\n            let message = target !== null && target !== void 0 ? target : this.create();\n            this.refJsonReader.read(json, message, options);\n            return message;\n        }\n        throw new Error(`Unable to parse message ${this.typeName} from JSON ${json_typings_1.typeofJsonValue(json)}.`);\n    }\n    /**\n     * This is an internal method. If you just want to write a message\n     * to JSON, use `toJson()` or `toJsonString().\n     *\n     * Writes JSON value and returns it.\n     */\n    internalJsonWrite(message, options) {\n        return this.refJsonWriter.write(message, options);\n    }\n    /**\n     * This is an internal method. If you just want to write a message\n     * in binary format, use `toBinary()`.\n     *\n     * Serializes the message in binary format and appends it to the given\n     * writer. Returns passed writer.\n     */\n    internalBinaryWrite(message, writer, options) {\n        this.refBinWriter.write(message, writer, options);\n        return writer;\n    }\n    /**\n     * This is an internal method. If you just want to read a message from\n     * binary data, use `fromBinary()`.\n     *\n     * Reads data from binary format and merges the fields into\n     * the target according to protobuf rules. If the target is\n     * omitted, a new instance is created first.\n     */\n    internalBinaryRead(reader, length, options, target) {\n        let message = target !== null && target !== void 0 ? target : this.create();\n        this.refBinReader.read(reader, message, options, length);\n        return message;\n    }\n}\nexports.MessageType = MessageType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.containsMessageType = void 0;\nconst message_type_contract_1 = require(\"./message-type-contract\");\n/**\n * Check if the provided object is a proto message.\n *\n * Note that this is an experimental feature - it is here to stay, but\n * implementation details may change without notice.\n */\nfunction containsMessageType(msg) {\n    return msg[message_type_contract_1.MESSAGE_TYPE] != null;\n}\nexports.containsMessageType = containsMessageType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.listEnumNumbers = exports.listEnumNames = exports.listEnumValues = exports.isEnumObject = void 0;\n/**\n * Is this a lookup object generated by Typescript, for a Typescript enum\n * generated by protobuf-ts?\n *\n * - No `const enum` (enum must not be inlined, we need reverse mapping).\n * - No string enum (we need int32 for protobuf).\n * - Must have a value for 0 (otherwise, we would need to support custom default values).\n */\nfunction isEnumObject(arg) {\n    if (typeof arg != 'object' || arg === null) {\n        return false;\n    }\n    if (!arg.hasOwnProperty(0)) {\n        return false;\n    }\n    for (let k of Object.keys(arg)) {\n        let num = parseInt(k);\n        if (!Number.isNaN(num)) {\n            // is there a name for the number?\n            let nam = arg[num];\n            if (nam === undefined)\n                return false;\n            // does the name resolve back to the number?\n            if (arg[nam] !== num)\n                return false;\n        }\n        else {\n            // is there a number for the name?\n            let num = arg[k];\n            if (num === undefined)\n                return false;\n            // is it a string enum?\n            if (typeof num !== 'number')\n                return false;\n            // do we know the number?\n            if (arg[num] === undefined)\n                return false;\n        }\n    }\n    return true;\n}\nexports.isEnumObject = isEnumObject;\n/**\n * Lists all values of a Typescript enum, as an array of objects with a \"name\"\n * property and a \"number\" property.\n *\n * Note that it is possible that a number appears more than once, because it is\n * possible to have aliases in an enum.\n *\n * Throws if the enum does not adhere to the rules of enums generated by\n * protobuf-ts. See `isEnumObject()`.\n */\nfunction listEnumValues(enumObject) {\n    if (!isEnumObject(enumObject))\n        throw new Error(\"not a typescript enum object\");\n    let values = [];\n    for (let [name, number] of Object.entries(enumObject))\n        if (typeof number == \"number\")\n            values.push({ name, number });\n    return values;\n}\nexports.listEnumValues = listEnumValues;\n/**\n * Lists the names of a Typescript enum.\n *\n * Throws if the enum does not adhere to the rules of enums generated by\n * protobuf-ts. See `isEnumObject()`.\n */\nfunction listEnumNames(enumObject) {\n    return listEnumValues(enumObject).map(val => val.name);\n}\nexports.listEnumNames = listEnumNames;\n/**\n * Lists the numbers of a Typescript enum.\n *\n * Throws if the enum does not adhere to the rules of enums generated by\n * protobuf-ts. See `isEnumObject()`.\n */\nfunction listEnumNumbers(enumObject) {\n    return listEnumValues(enumObject)\n        .map(val => val.number)\n        .filter((num, index, arr) => arr.indexOf(num) == index);\n}\nexports.listEnumNumbers = listEnumNumbers;\n","\"use strict\";\n// Public API of the protobuf-ts runtime.\n// Note: we do not use `export * from ...` to help tree shakers,\n// webpack verbose output hints that this should be useful\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// Convenience JSON typings and corresponding type guards\nvar json_typings_1 = require(\"./json-typings\");\nObject.defineProperty(exports, \"typeofJsonValue\", { enumerable: true, get: function () { return json_typings_1.typeofJsonValue; } });\nObject.defineProperty(exports, \"isJsonObject\", { enumerable: true, get: function () { return json_typings_1.isJsonObject; } });\n// Base 64 encoding\nvar base64_1 = require(\"./base64\");\nObject.defineProperty(exports, \"base64decode\", { enumerable: true, get: function () { return base64_1.base64decode; } });\nObject.defineProperty(exports, \"base64encode\", { enumerable: true, get: function () { return base64_1.base64encode; } });\n// UTF8 encoding\nvar protobufjs_utf8_1 = require(\"./protobufjs-utf8\");\nObject.defineProperty(exports, \"utf8read\", { enumerable: true, get: function () { return protobufjs_utf8_1.utf8read; } });\n// Binary format contracts, options for reading and writing, for example\nvar binary_format_contract_1 = require(\"./binary-format-contract\");\nObject.defineProperty(exports, \"WireType\", { enumerable: true, get: function () { return binary_format_contract_1.WireType; } });\nObject.defineProperty(exports, \"mergeBinaryOptions\", { enumerable: true, get: function () { return binary_format_contract_1.mergeBinaryOptions; } });\nObject.defineProperty(exports, \"UnknownFieldHandler\", { enumerable: true, get: function () { return binary_format_contract_1.UnknownFieldHandler; } });\n// Standard IBinaryReader implementation\nvar binary_reader_1 = require(\"./binary-reader\");\nObject.defineProperty(exports, \"BinaryReader\", { enumerable: true, get: function () { return binary_reader_1.BinaryReader; } });\nObject.defineProperty(exports, \"binaryReadOptions\", { enumerable: true, get: function () { return binary_reader_1.binaryReadOptions; } });\n// Standard IBinaryWriter implementation\nvar binary_writer_1 = require(\"./binary-writer\");\nObject.defineProperty(exports, \"BinaryWriter\", { enumerable: true, get: function () { return binary_writer_1.BinaryWriter; } });\nObject.defineProperty(exports, \"binaryWriteOptions\", { enumerable: true, get: function () { return binary_writer_1.binaryWriteOptions; } });\n// Int64 and UInt64 implementations required for the binary format\nvar pb_long_1 = require(\"./pb-long\");\nObject.defineProperty(exports, \"PbLong\", { enumerable: true, get: function () { return pb_long_1.PbLong; } });\nObject.defineProperty(exports, \"PbULong\", { enumerable: true, get: function () { return pb_long_1.PbULong; } });\n// JSON format contracts, options for reading and writing, for example\nvar json_format_contract_1 = require(\"./json-format-contract\");\nObject.defineProperty(exports, \"jsonReadOptions\", { enumerable: true, get: function () { return json_format_contract_1.jsonReadOptions; } });\nObject.defineProperty(exports, \"jsonWriteOptions\", { enumerable: true, get: function () { return json_format_contract_1.jsonWriteOptions; } });\nObject.defineProperty(exports, \"mergeJsonOptions\", { enumerable: true, get: function () { return json_format_contract_1.mergeJsonOptions; } });\n// Message type contract\nvar message_type_contract_1 = require(\"./message-type-contract\");\nObject.defineProperty(exports, \"MESSAGE_TYPE\", { enumerable: true, get: function () { return message_type_contract_1.MESSAGE_TYPE; } });\n// Message type implementation via reflection\nvar message_type_1 = require(\"./message-type\");\nObject.defineProperty(exports, \"MessageType\", { enumerable: true, get: function () { return message_type_1.MessageType; } });\n// Reflection info, generated by the plugin, exposed to the user, used by reflection ops\nvar reflection_info_1 = require(\"./reflection-info\");\nObject.defineProperty(exports, \"ScalarType\", { enumerable: true, get: function () { return reflection_info_1.ScalarType; } });\nObject.defineProperty(exports, \"LongType\", { enumerable: true, get: function () { return reflection_info_1.LongType; } });\nObject.defineProperty(exports, \"RepeatType\", { enumerable: true, get: function () { return reflection_info_1.RepeatType; } });\nObject.defineProperty(exports, \"normalizeFieldInfo\", { enumerable: true, get: function () { return reflection_info_1.normalizeFieldInfo; } });\nObject.defineProperty(exports, \"readFieldOptions\", { enumerable: true, get: function () { return reflection_info_1.readFieldOptions; } });\nObject.defineProperty(exports, \"readFieldOption\", { enumerable: true, get: function () { return reflection_info_1.readFieldOption; } });\nObject.defineProperty(exports, \"readMessageOption\", { enumerable: true, get: function () { return reflection_info_1.readMessageOption; } });\n// Message operations via reflection\nvar reflection_type_check_1 = require(\"./reflection-type-check\");\nObject.defineProperty(exports, \"ReflectionTypeCheck\", { enumerable: true, get: function () { return reflection_type_check_1.ReflectionTypeCheck; } });\nvar reflection_create_1 = require(\"./reflection-create\");\nObject.defineProperty(exports, \"reflectionCreate\", { enumerable: true, get: function () { return reflection_create_1.reflectionCreate; } });\nvar reflection_scalar_default_1 = require(\"./reflection-scalar-default\");\nObject.defineProperty(exports, \"reflectionScalarDefault\", { enumerable: true, get: function () { return reflection_scalar_default_1.reflectionScalarDefault; } });\nvar reflection_merge_partial_1 = require(\"./reflection-merge-partial\");\nObject.defineProperty(exports, \"reflectionMergePartial\", { enumerable: true, get: function () { return reflection_merge_partial_1.reflectionMergePartial; } });\nvar reflection_equals_1 = require(\"./reflection-equals\");\nObject.defineProperty(exports, \"reflectionEquals\", { enumerable: true, get: function () { return reflection_equals_1.reflectionEquals; } });\nvar reflection_binary_reader_1 = require(\"./reflection-binary-reader\");\nObject.defineProperty(exports, \"ReflectionBinaryReader\", { enumerable: true, get: function () { return reflection_binary_reader_1.ReflectionBinaryReader; } });\nvar reflection_binary_writer_1 = require(\"./reflection-binary-writer\");\nObject.defineProperty(exports, \"ReflectionBinaryWriter\", { enumerable: true, get: function () { return reflection_binary_writer_1.ReflectionBinaryWriter; } });\nvar reflection_json_reader_1 = require(\"./reflection-json-reader\");\nObject.defineProperty(exports, \"ReflectionJsonReader\", { enumerable: true, get: function () { return reflection_json_reader_1.ReflectionJsonReader; } });\nvar reflection_json_writer_1 = require(\"./reflection-json-writer\");\nObject.defineProperty(exports, \"ReflectionJsonWriter\", { enumerable: true, get: function () { return reflection_json_writer_1.ReflectionJsonWriter; } });\nvar reflection_contains_message_type_1 = require(\"./reflection-contains-message-type\");\nObject.defineProperty(exports, \"containsMessageType\", { enumerable: true, get: function () { return reflection_contains_message_type_1.containsMessageType; } });\n// Oneof helpers\nvar oneof_1 = require(\"./oneof\");\nObject.defineProperty(exports, \"isOneofGroup\", { enumerable: true, get: function () { return oneof_1.isOneofGroup; } });\nObject.defineProperty(exports, \"setOneofValue\", { enumerable: true, get: function () { return oneof_1.setOneofValue; } });\nObject.defineProperty(exports, \"getOneofValue\", { enumerable: true, get: function () { return oneof_1.getOneofValue; } });\nObject.defineProperty(exports, \"clearOneofValue\", { enumerable: true, get: function () { return oneof_1.clearOneofValue; } });\nObject.defineProperty(exports, \"getSelectedOneofValue\", { enumerable: true, get: function () { return oneof_1.getSelectedOneofValue; } });\n// Enum object type guard and reflection util, may be interesting to the user.\nvar enum_object_1 = require(\"./enum-object\");\nObject.defineProperty(exports, \"listEnumValues\", { enumerable: true, get: function () { return enum_object_1.listEnumValues; } });\nObject.defineProperty(exports, \"listEnumNames\", { enumerable: true, get: function () { return enum_object_1.listEnumNames; } });\nObject.defineProperty(exports, \"listEnumNumbers\", { enumerable: true, get: function () { return enum_object_1.listEnumNumbers; } });\nObject.defineProperty(exports, \"isEnumObject\", { enumerable: true, get: function () { return enum_object_1.isEnumObject; } });\n// lowerCamelCase() is exported for plugin, rpc-runtime and other rpc packages\nvar lower_camel_case_1 = require(\"./lower-camel-case\");\nObject.defineProperty(exports, \"lowerCamelCase\", { enumerable: true, get: function () { return lower_camel_case_1.lowerCamelCase; } });\n// assertion functions are exported for plugin, may also be useful to user\nvar assert_1 = require(\"./assert\");\nObject.defineProperty(exports, \"assert\", { enumerable: true, get: function () { return assert_1.assert; } });\nObject.defineProperty(exports, \"assertNever\", { enumerable: true, get: function () { return assert_1.assertNever; } });\nObject.defineProperty(exports, \"assertInt32\", { enumerable: true, get: function () { return assert_1.assertInt32; } });\nObject.defineProperty(exports, \"assertUInt32\", { enumerable: true, get: function () { return assert_1.assertUInt32; } });\nObject.defineProperty(exports, \"assertFloat32\", { enumerable: true, get: function () { return assert_1.assertFloat32; } });\n","import { MessageType, UnknownFieldHandler, WireType, isJsonObject, reflectionMergePartial, typeofJsonValue } from \"@protobuf-ts/runtime\";\n\n//#region generated/ts/google/protobuf/struct.ts\n/**\n* `NullValue` is a singleton enumeration to represent the null value for the\n* `Value` type union.\n*\n* The JSON representation for `NullValue` is JSON `null`.\n*\n* @generated from protobuf enum google.protobuf.NullValue\n*/\nlet NullValue = /* @__PURE__ */ function(NullValue$1) {\n\t/**\n\t* Null value.\n\t*\n\t* @generated from protobuf enum value: NULL_VALUE = 0;\n\t*/\n\tNullValue$1[NullValue$1[\"NULL_VALUE\"] = 0] = \"NULL_VALUE\";\n\treturn NullValue$1;\n}({});\nvar Struct$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"google.protobuf.Struct\", [{\n\t\t\tno: 1,\n\t\t\tname: \"fields\",\n\t\t\tkind: \"map\",\n\t\t\tK: 9,\n\t\t\tV: {\n\t\t\t\tkind: \"message\",\n\t\t\t\tT: () => Value\n\t\t\t}\n\t\t}]);\n\t}\n\t/**\n\t* Encode `Struct` to JSON object.\n\t*/\n\tinternalJsonWrite(message, options) {\n\t\tlet json = {};\n\t\tfor (let [k, v] of Object.entries(message.fields)) json[k] = Value.toJson(v);\n\t\treturn json;\n\t}\n\t/**\n\t* Decode `Struct` from JSON object.\n\t*/\n\tinternalJsonRead(json, options, target) {\n\t\tif (!isJsonObject(json)) throw new globalThis.Error(\"Unable to parse message \" + this.typeName + \" from JSON \" + typeofJsonValue(json) + \".\");\n\t\tif (!target) target = this.create();\n\t\tfor (let [k, v] of globalThis.Object.entries(json)) target.fields[k] = Value.fromJson(v);\n\t\treturn target;\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.fields = {};\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tthis.binaryReadMap1(message.fields, reader, options);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tbinaryReadMap1(map, reader, options) {\n\t\tlet len = reader.uint32(), end = reader.pos + len, key, val;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tkey = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tval = Value.internalBinaryRead(reader, reader.uint32(), options);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: throw new globalThis.Error(\"unknown map entry field for google.protobuf.Struct.fields\");\n\t\t\t}\n\t\t}\n\t\tmap[key ?? \"\"] = val ?? Value.create();\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tfor (let k of globalThis.Object.keys(message.fields)) {\n\t\t\twriter.tag(1, WireType.LengthDelimited).fork().tag(1, WireType.LengthDelimited).string(k);\n\t\t\twriter.tag(2, WireType.LengthDelimited).fork();\n\t\t\tValue.internalBinaryWrite(message.fields[k], writer, options);\n\t\t\twriter.join().join();\n\t\t}\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message google.protobuf.Struct\n*/\nconst Struct = new Struct$Type();\nvar Value$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"google.protobuf.Value\", [\n\t\t\t{\n\t\t\t\tno: 1,\n\t\t\t\tname: \"null_value\",\n\t\t\t\tkind: \"enum\",\n\t\t\t\toneof: \"kind\",\n\t\t\t\tT: () => [\"google.protobuf.NullValue\", NullValue]\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 2,\n\t\t\t\tname: \"number_value\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\toneof: \"kind\",\n\t\t\t\tT: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 3,\n\t\t\t\tname: \"string_value\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\toneof: \"kind\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 4,\n\t\t\t\tname: \"bool_value\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\toneof: \"kind\",\n\t\t\t\tT: 8\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 5,\n\t\t\t\tname: \"struct_value\",\n\t\t\t\tkind: \"message\",\n\t\t\t\toneof: \"kind\",\n\t\t\t\tT: () => Struct\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 6,\n\t\t\t\tname: \"list_value\",\n\t\t\t\tkind: \"message\",\n\t\t\t\toneof: \"kind\",\n\t\t\t\tT: () => ListValue\n\t\t\t}\n\t\t]);\n\t}\n\t/**\n\t* Encode `Value` to JSON value.\n\t*/\n\tinternalJsonWrite(message, options) {\n\t\tif (message.kind.oneofKind === void 0) throw new globalThis.Error();\n\t\tswitch (message.kind.oneofKind) {\n\t\t\tcase void 0: throw new globalThis.Error();\n\t\t\tcase \"boolValue\": return message.kind.boolValue;\n\t\t\tcase \"nullValue\": return null;\n\t\t\tcase \"numberValue\":\n\t\t\t\tlet numberValue = message.kind.numberValue;\n\t\t\t\tif (typeof numberValue == \"number\" && !Number.isFinite(numberValue)) throw new globalThis.Error();\n\t\t\t\treturn numberValue;\n\t\t\tcase \"stringValue\": return message.kind.stringValue;\n\t\t\tcase \"listValue\":\n\t\t\t\tlet listValueField = this.fields.find((f) => f.no === 6);\n\t\t\t\tif (listValueField?.kind !== \"message\") throw new globalThis.Error();\n\t\t\t\treturn listValueField.T().toJson(message.kind.listValue);\n\t\t\tcase \"structValue\":\n\t\t\t\tlet structValueField = this.fields.find((f) => f.no === 5);\n\t\t\t\tif (structValueField?.kind !== \"message\") throw new globalThis.Error();\n\t\t\t\treturn structValueField.T().toJson(message.kind.structValue);\n\t\t}\n\t}\n\t/**\n\t* Decode `Value` from JSON value.\n\t*/\n\tinternalJsonRead(json, options, target) {\n\t\tif (!target) target = this.create();\n\t\tswitch (typeof json) {\n\t\t\tcase \"number\":\n\t\t\t\ttarget.kind = {\n\t\t\t\t\toneofKind: \"numberValue\",\n\t\t\t\t\tnumberValue: json\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase \"string\":\n\t\t\t\ttarget.kind = {\n\t\t\t\t\toneofKind: \"stringValue\",\n\t\t\t\t\tstringValue: json\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase \"boolean\":\n\t\t\t\ttarget.kind = {\n\t\t\t\t\toneofKind: \"boolValue\",\n\t\t\t\t\tboolValue: json\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase \"object\":\n\t\t\t\tif (json === null) target.kind = {\n\t\t\t\t\toneofKind: \"nullValue\",\n\t\t\t\t\tnullValue: NullValue.NULL_VALUE\n\t\t\t\t};\n\t\t\t\telse if (globalThis.Array.isArray(json)) target.kind = {\n\t\t\t\t\toneofKind: \"listValue\",\n\t\t\t\t\tlistValue: ListValue.fromJson(json)\n\t\t\t\t};\n\t\t\t\telse target.kind = {\n\t\t\t\t\toneofKind: \"structValue\",\n\t\t\t\t\tstructValue: Struct.fromJson(json)\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tdefault: throw new globalThis.Error(\"Unable to parse \" + this.typeName + \" from JSON \" + typeofJsonValue(json));\n\t\t}\n\t\treturn target;\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.kind = { oneofKind: void 0 };\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.kind = {\n\t\t\t\t\t\toneofKind: \"nullValue\",\n\t\t\t\t\t\tnullValue: reader.int32()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tmessage.kind = {\n\t\t\t\t\t\toneofKind: \"numberValue\",\n\t\t\t\t\t\tnumberValue: reader.double()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tmessage.kind = {\n\t\t\t\t\t\toneofKind: \"stringValue\",\n\t\t\t\t\t\tstringValue: reader.string()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tmessage.kind = {\n\t\t\t\t\t\toneofKind: \"boolValue\",\n\t\t\t\t\t\tboolValue: reader.bool()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase 5:\n\t\t\t\t\tmessage.kind = {\n\t\t\t\t\t\toneofKind: \"structValue\",\n\t\t\t\t\t\tstructValue: Struct.internalBinaryRead(reader, reader.uint32(), options, message.kind.structValue)\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase 6:\n\t\t\t\t\tmessage.kind = {\n\t\t\t\t\t\toneofKind: \"listValue\",\n\t\t\t\t\t\tlistValue: ListValue.internalBinaryRead(reader, reader.uint32(), options, message.kind.listValue)\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tif (message.kind.oneofKind === \"nullValue\") writer.tag(1, WireType.Varint).int32(message.kind.nullValue);\n\t\tif (message.kind.oneofKind === \"numberValue\") writer.tag(2, WireType.Bit64).double(message.kind.numberValue);\n\t\tif (message.kind.oneofKind === \"stringValue\") writer.tag(3, WireType.LengthDelimited).string(message.kind.stringValue);\n\t\tif (message.kind.oneofKind === \"boolValue\") writer.tag(4, WireType.Varint).bool(message.kind.boolValue);\n\t\tif (message.kind.oneofKind === \"structValue\") Struct.internalBinaryWrite(message.kind.structValue, writer.tag(5, WireType.LengthDelimited).fork(), options).join();\n\t\tif (message.kind.oneofKind === \"listValue\") ListValue.internalBinaryWrite(message.kind.listValue, writer.tag(6, WireType.LengthDelimited).fork(), options).join();\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message google.protobuf.Value\n*/\nconst Value = new Value$Type();\nvar ListValue$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"google.protobuf.ListValue\", [{\n\t\t\tno: 1,\n\t\t\tname: \"values\",\n\t\t\tkind: \"message\",\n\t\t\trepeat: 2,\n\t\t\tT: () => Value\n\t\t}]);\n\t}\n\t/**\n\t* Encode `ListValue` to JSON array.\n\t*/\n\tinternalJsonWrite(message, options) {\n\t\treturn message.values.map((v) => Value.toJson(v));\n\t}\n\t/**\n\t* Decode `ListValue` from JSON array.\n\t*/\n\tinternalJsonRead(json, options, target) {\n\t\tif (!globalThis.Array.isArray(json)) throw new globalThis.Error(\"Unable to parse \" + this.typeName + \" from JSON \" + typeofJsonValue(json));\n\t\tif (!target) target = this.create();\n\t\tlet values = json.map((v) => Value.fromJson(v));\n\t\ttarget.values.push(...values);\n\t\treturn target;\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.values = [];\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.values.push(Value.internalBinaryRead(reader, reader.uint32(), options));\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tfor (let i = 0; i < message.values.length; i++) Value.internalBinaryWrite(message.values[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message google.protobuf.ListValue\n*/\nconst ListValue = new ListValue$Type();\n\n//#endregion\nexport { ListValue, NullValue, Struct, Value };\n//# sourceMappingURL=struct-LJz5_MGH.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._globalThis = void 0;\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line node/no-unsupported-features/es-builtins\nexports._globalThis = typeof globalThis === 'object' ? globalThis : global;\n//# sourceMappingURL=globalThis.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./globalThis\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./node\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.VERSION = '1.7.0';\n//# sourceMappingURL=version.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isCompatible = exports._makeCompatibilityCheck = void 0;\nconst version_1 = require(\"../version\");\nconst re = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;\n/**\n * Create a function to test an API version to see if it is compatible with the provided ownVersion.\n *\n * The returned function has the following semantics:\n * - Exact match is always compatible\n * - Major versions must match exactly\n *    - 1.x package cannot use global 2.x package\n *    - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n *    - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n *    - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param ownVersion version which should be checked against\n */\nfunction _makeCompatibilityCheck(ownVersion) {\n    const acceptedVersions = new Set([ownVersion]);\n    const rejectedVersions = new Set();\n    const myVersionMatch = ownVersion.match(re);\n    if (!myVersionMatch) {\n        // we cannot guarantee compatibility so we always return noop\n        return () => false;\n    }\n    const ownVersionParsed = {\n        major: +myVersionMatch[1],\n        minor: +myVersionMatch[2],\n        patch: +myVersionMatch[3],\n        prerelease: myVersionMatch[4],\n    };\n    // if ownVersion has a prerelease tag, versions must match exactly\n    if (ownVersionParsed.prerelease != null) {\n        return function isExactmatch(globalVersion) {\n            return globalVersion === ownVersion;\n        };\n    }\n    function _reject(v) {\n        rejectedVersions.add(v);\n        return false;\n    }\n    function _accept(v) {\n        acceptedVersions.add(v);\n        return true;\n    }\n    return function isCompatible(globalVersion) {\n        if (acceptedVersions.has(globalVersion)) {\n            return true;\n        }\n        if (rejectedVersions.has(globalVersion)) {\n            return false;\n        }\n        const globalVersionMatch = globalVersion.match(re);\n        if (!globalVersionMatch) {\n            // cannot parse other version\n            // we cannot guarantee compatibility so we always noop\n            return _reject(globalVersion);\n        }\n        const globalVersionParsed = {\n            major: +globalVersionMatch[1],\n            minor: +globalVersionMatch[2],\n            patch: +globalVersionMatch[3],\n            prerelease: globalVersionMatch[4],\n        };\n        // if globalVersion has a prerelease tag, versions must match exactly\n        if (globalVersionParsed.prerelease != null) {\n            return _reject(globalVersion);\n        }\n        // major versions must match\n        if (ownVersionParsed.major !== globalVersionParsed.major) {\n            return _reject(globalVersion);\n        }\n        if (ownVersionParsed.major === 0) {\n            if (ownVersionParsed.minor === globalVersionParsed.minor &&\n                ownVersionParsed.patch <= globalVersionParsed.patch) {\n                return _accept(globalVersion);\n            }\n            return _reject(globalVersion);\n        }\n        if (ownVersionParsed.minor <= globalVersionParsed.minor) {\n            return _accept(globalVersion);\n        }\n        return _reject(globalVersion);\n    };\n}\nexports._makeCompatibilityCheck = _makeCompatibilityCheck;\n/**\n * Test an API version to see if it is compatible with this API.\n *\n * - Exact match is always compatible\n * - Major versions must match exactly\n *    - 1.x package cannot use global 2.x package\n *    - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n *    - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n *    - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param version version of the API requesting an instance of the global API\n */\nexports.isCompatible = _makeCompatibilityCheck(version_1.VERSION);\n//# sourceMappingURL=semver.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unregisterGlobal = exports.getGlobal = exports.registerGlobal = void 0;\nconst platform_1 = require(\"../platform\");\nconst version_1 = require(\"../version\");\nconst semver_1 = require(\"./semver\");\nconst major = version_1.VERSION.split('.')[0];\nconst GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for(`td-opentelemetry.js.api.${major}`);\nconst _global = platform_1._globalThis;\nfunction registerGlobal(type, instance, diag, allowOverride = false) {\n    var _a;\n    const api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) !== null && _a !== void 0 ? _a : {\n        version: version_1.VERSION,\n    });\n    if (!allowOverride && api[type]) {\n        // already registered an API of this type\n        const err = new Error(`@opentelemetry/api: Attempted duplicate registration of API: ${type}`);\n        diag.error(err.stack || err.message);\n        return false;\n    }\n    if (api.version !== version_1.VERSION) {\n        // All registered APIs must be of the same version exactly\n        const err = new Error(`@opentelemetry/api: Registration of version v${api.version} for ${type} does not match previously registered API v${version_1.VERSION}`);\n        diag.error(err.stack || err.message);\n        return false;\n    }\n    api[type] = instance;\n    diag.debug(`@opentelemetry/api: Registered a global for ${type} v${version_1.VERSION}.`);\n    return true;\n}\nexports.registerGlobal = registerGlobal;\nfunction getGlobal(type) {\n    var _a, _b;\n    const globalVersion = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _a === void 0 ? void 0 : _a.version;\n    if (!globalVersion || !(0, semver_1.isCompatible)(globalVersion)) {\n        return;\n    }\n    return (_b = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _b === void 0 ? void 0 : _b[type];\n}\nexports.getGlobal = getGlobal;\nfunction unregisterGlobal(type, diag) {\n    diag.debug(`@opentelemetry/api: Unregistering a global for ${type} v${version_1.VERSION}.`);\n    const api = _global[GLOBAL_OPENTELEMETRY_API_KEY];\n    if (api) {\n        delete api[type];\n    }\n}\nexports.unregisterGlobal = unregisterGlobal;\n//# sourceMappingURL=global-utils.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagComponentLogger = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\n/**\n * Component Logger which is meant to be used as part of any component which\n * will add automatically additional namespace in front of the log message.\n * It will then forward all message to global diag logger\n * @example\n * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' });\n * cLogger.debug('test');\n * // @opentelemetry/instrumentation-http test\n */\nclass DiagComponentLogger {\n    constructor(props) {\n        this._namespace = props.namespace || 'DiagComponentLogger';\n    }\n    debug(...args) {\n        return logProxy('debug', this._namespace, args);\n    }\n    error(...args) {\n        return logProxy('error', this._namespace, args);\n    }\n    info(...args) {\n        return logProxy('info', this._namespace, args);\n    }\n    warn(...args) {\n        return logProxy('warn', this._namespace, args);\n    }\n    verbose(...args) {\n        return logProxy('verbose', this._namespace, args);\n    }\n}\nexports.DiagComponentLogger = DiagComponentLogger;\nfunction logProxy(funcName, namespace, args) {\n    const logger = (0, global_utils_1.getGlobal)('diag');\n    // shortcut if logger not set\n    if (!logger) {\n        return;\n    }\n    args.unshift(namespace);\n    return logger[funcName](...args);\n}\n//# sourceMappingURL=ComponentLogger.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagLogLevel = void 0;\n/**\n * Defines the available internal logging levels for the diagnostic logger, the numeric values\n * of the levels are defined to match the original values from the initial LogLevel to avoid\n * compatibility/migration issues for any implementation that assume the numeric ordering.\n */\nvar DiagLogLevel;\n(function (DiagLogLevel) {\n    /** Diagnostic Logging level setting to disable all logging (except and forced logs) */\n    DiagLogLevel[DiagLogLevel[\"NONE\"] = 0] = \"NONE\";\n    /** Identifies an error scenario */\n    DiagLogLevel[DiagLogLevel[\"ERROR\"] = 30] = \"ERROR\";\n    /** Identifies a warning scenario */\n    DiagLogLevel[DiagLogLevel[\"WARN\"] = 50] = \"WARN\";\n    /** General informational log message */\n    DiagLogLevel[DiagLogLevel[\"INFO\"] = 60] = \"INFO\";\n    /** General debug log message */\n    DiagLogLevel[DiagLogLevel[\"DEBUG\"] = 70] = \"DEBUG\";\n    /**\n     * Detailed trace level logging should only be used for development, should only be set\n     * in a development environment.\n     */\n    DiagLogLevel[DiagLogLevel[\"VERBOSE\"] = 80] = \"VERBOSE\";\n    /** Used to set the logging level to include all logging */\n    DiagLogLevel[DiagLogLevel[\"ALL\"] = 9999] = \"ALL\";\n})(DiagLogLevel = exports.DiagLogLevel || (exports.DiagLogLevel = {}));\n//# sourceMappingURL=types.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createLogLevelDiagLogger = void 0;\nconst types_1 = require(\"../types\");\nfunction createLogLevelDiagLogger(maxLevel, logger) {\n    if (maxLevel < types_1.DiagLogLevel.NONE) {\n        maxLevel = types_1.DiagLogLevel.NONE;\n    }\n    else if (maxLevel > types_1.DiagLogLevel.ALL) {\n        maxLevel = types_1.DiagLogLevel.ALL;\n    }\n    // In case the logger is null or undefined\n    logger = logger || {};\n    function _filterFunc(funcName, theLevel) {\n        const theFunc = logger[funcName];\n        if (typeof theFunc === 'function' && maxLevel >= theLevel) {\n            return theFunc.bind(logger);\n        }\n        return function () { };\n    }\n    return {\n        error: _filterFunc('error', types_1.DiagLogLevel.ERROR),\n        warn: _filterFunc('warn', types_1.DiagLogLevel.WARN),\n        info: _filterFunc('info', types_1.DiagLogLevel.INFO),\n        debug: _filterFunc('debug', types_1.DiagLogLevel.DEBUG),\n        verbose: _filterFunc('verbose', types_1.DiagLogLevel.VERBOSE),\n    };\n}\nexports.createLogLevelDiagLogger = createLogLevelDiagLogger;\n//# sourceMappingURL=logLevelLogger.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagAPI = void 0;\nconst ComponentLogger_1 = require(\"../diag/ComponentLogger\");\nconst logLevelLogger_1 = require(\"../diag/internal/logLevelLogger\");\nconst types_1 = require(\"../diag/types\");\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst API_NAME = 'diag';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry internal\n * diagnostic API\n */\nclass DiagAPI {\n    /**\n     * Private internal constructor\n     * @private\n     */\n    constructor() {\n        function _logProxy(funcName) {\n            return function (...args) {\n                const logger = (0, global_utils_1.getGlobal)('diag');\n                // shortcut if logger not set\n                if (!logger)\n                    return;\n                return logger[funcName](...args);\n            };\n        }\n        // Using self local variable for minification purposes as 'this' cannot be minified\n        const self = this;\n        // DiagAPI specific functions\n        const setLogger = (logger, optionsOrLogLevel = { logLevel: types_1.DiagLogLevel.INFO }) => {\n            var _a, _b, _c;\n            if (logger === self) {\n                // There isn't much we can do here.\n                // Logging to the console might break the user application.\n                // Try to log to self. If a logger was previously registered it will receive the log.\n                const err = new Error('Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation');\n                self.error((_a = err.stack) !== null && _a !== void 0 ? _a : err.message);\n                return false;\n            }\n            if (typeof optionsOrLogLevel === 'number') {\n                optionsOrLogLevel = {\n                    logLevel: optionsOrLogLevel,\n                };\n            }\n            const oldLogger = (0, global_utils_1.getGlobal)('diag');\n            const newLogger = (0, logLevelLogger_1.createLogLevelDiagLogger)((_b = optionsOrLogLevel.logLevel) !== null && _b !== void 0 ? _b : types_1.DiagLogLevel.INFO, logger);\n            // There already is an logger registered. We'll let it know before overwriting it.\n            if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) {\n                const stack = (_c = new Error().stack) !== null && _c !== void 0 ? _c : '<failed to generate stacktrace>';\n                oldLogger.warn(`Current logger will be overwritten from ${stack}`);\n                newLogger.warn(`Current logger will overwrite one already registered from ${stack}`);\n            }\n            return (0, global_utils_1.registerGlobal)('diag', newLogger, self, true);\n        };\n        self.setLogger = setLogger;\n        self.disable = () => {\n            (0, global_utils_1.unregisterGlobal)(API_NAME, self);\n        };\n        self.createComponentLogger = (options) => {\n            return new ComponentLogger_1.DiagComponentLogger(options);\n        };\n        self.verbose = _logProxy('verbose');\n        self.debug = _logProxy('debug');\n        self.info = _logProxy('info');\n        self.warn = _logProxy('warn');\n        self.error = _logProxy('error');\n    }\n    /** Get the singleton instance of the DiagAPI API */\n    static instance() {\n        if (!this._instance) {\n            this._instance = new DiagAPI();\n        }\n        return this._instance;\n    }\n}\nexports.DiagAPI = DiagAPI;\n//# sourceMappingURL=diag.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaggageImpl = void 0;\nclass BaggageImpl {\n    constructor(entries) {\n        this._entries = entries ? new Map(entries) : new Map();\n    }\n    getEntry(key) {\n        const entry = this._entries.get(key);\n        if (!entry) {\n            return undefined;\n        }\n        return Object.assign({}, entry);\n    }\n    getAllEntries() {\n        return Array.from(this._entries.entries()).map(([k, v]) => [k, v]);\n    }\n    setEntry(key, entry) {\n        const newBaggage = new BaggageImpl(this._entries);\n        newBaggage._entries.set(key, entry);\n        return newBaggage;\n    }\n    removeEntry(key) {\n        const newBaggage = new BaggageImpl(this._entries);\n        newBaggage._entries.delete(key);\n        return newBaggage;\n    }\n    removeEntries(...keys) {\n        const newBaggage = new BaggageImpl(this._entries);\n        for (const key of keys) {\n            newBaggage._entries.delete(key);\n        }\n        return newBaggage;\n    }\n    clear() {\n        return new BaggageImpl();\n    }\n}\nexports.BaggageImpl = BaggageImpl;\n//# sourceMappingURL=baggage-impl.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.baggageEntryMetadataSymbol = void 0;\n/**\n * Symbol used to make BaggageEntryMetadata an opaque type\n */\nexports.baggageEntryMetadataSymbol = Symbol('BaggageEntryMetadata');\n//# sourceMappingURL=symbol.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.baggageEntryMetadataFromString = exports.createBaggage = void 0;\nconst diag_1 = require(\"../api/diag\");\nconst baggage_impl_1 = require(\"./internal/baggage-impl\");\nconst symbol_1 = require(\"./internal/symbol\");\nconst diag = diag_1.DiagAPI.instance();\n/**\n * Create a new Baggage with optional entries\n *\n * @param entries An array of baggage entries the new baggage should contain\n */\nfunction createBaggage(entries = {}) {\n    return new baggage_impl_1.BaggageImpl(new Map(Object.entries(entries)));\n}\nexports.createBaggage = createBaggage;\n/**\n * Create a serializable BaggageEntryMetadata object from a string.\n *\n * @param str string metadata. Format is currently not defined by the spec and has no special meaning.\n *\n */\nfunction baggageEntryMetadataFromString(str) {\n    if (typeof str !== 'string') {\n        diag.error(`Cannot create baggage metadata from unknown type: ${typeof str}`);\n        str = '';\n    }\n    return {\n        __TYPE__: symbol_1.baggageEntryMetadataSymbol,\n        toString() {\n            return str;\n        },\n    };\n}\nexports.baggageEntryMetadataFromString = baggageEntryMetadataFromString;\n//# sourceMappingURL=utils.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ROOT_CONTEXT = exports.createContextKey = void 0;\n/** Get a key to uniquely identify a context value */\nfunction createContextKey(description) {\n    // The specification states that for the same input, multiple calls should\n    // return different keys. Due to the nature of the JS dependency management\n    // system, this creates problems where multiple versions of some package\n    // could hold different keys for the same property.\n    //\n    // Therefore, we use Symbol.for which returns the same key for the same input.\n    return Symbol.for(description);\n}\nexports.createContextKey = createContextKey;\nclass BaseContext {\n    /**\n     * Construct a new context which inherits values from an optional parent context.\n     *\n     * @param parentContext a context from which to inherit values\n     */\n    constructor(parentContext) {\n        // for minification\n        const self = this;\n        self._currentContext = parentContext ? new Map(parentContext) : new Map();\n        self.getValue = (key) => self._currentContext.get(key);\n        self.setValue = (key, value) => {\n            const context = new BaseContext(self._currentContext);\n            context._currentContext.set(key, value);\n            return context;\n        };\n        self.deleteValue = (key) => {\n            const context = new BaseContext(self._currentContext);\n            context._currentContext.delete(key);\n            return context;\n        };\n    }\n}\n/** The root context is used as the default parent context when there is no active context */\nexports.ROOT_CONTEXT = new BaseContext();\n//# sourceMappingURL=context.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagConsoleLogger = void 0;\nconst consoleMap = [\n    { n: 'error', c: 'error' },\n    { n: 'warn', c: 'warn' },\n    { n: 'info', c: 'info' },\n    { n: 'debug', c: 'debug' },\n    { n: 'verbose', c: 'trace' },\n];\n/**\n * A simple Immutable Console based diagnostic logger which will output any messages to the Console.\n * If you want to limit the amount of logging to a specific level or lower use the\n * {@link createLogLevelDiagLogger}\n */\nclass DiagConsoleLogger {\n    constructor() {\n        function _consoleFunc(funcName) {\n            return function (...args) {\n                if (console) {\n                    // Some environments only expose the console when the F12 developer console is open\n                    // eslint-disable-next-line no-console\n                    let theFunc = console[funcName];\n                    if (typeof theFunc !== 'function') {\n                        // Not all environments support all functions\n                        // eslint-disable-next-line no-console\n                        theFunc = console.log;\n                    }\n                    // One last final check\n                    if (typeof theFunc === 'function') {\n                        return theFunc.apply(console, args);\n                    }\n                }\n            };\n        }\n        for (let i = 0; i < consoleMap.length; i++) {\n            this[consoleMap[i].n] = _consoleFunc(consoleMap[i].c);\n        }\n    }\n}\nexports.DiagConsoleLogger = DiagConsoleLogger;\n//# sourceMappingURL=consoleLogger.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createNoopMeter = exports.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC = exports.NOOP_OBSERVABLE_GAUGE_METRIC = exports.NOOP_OBSERVABLE_COUNTER_METRIC = exports.NOOP_UP_DOWN_COUNTER_METRIC = exports.NOOP_HISTOGRAM_METRIC = exports.NOOP_COUNTER_METRIC = exports.NOOP_METER = exports.NoopObservableUpDownCounterMetric = exports.NoopObservableGaugeMetric = exports.NoopObservableCounterMetric = exports.NoopObservableMetric = exports.NoopHistogramMetric = exports.NoopUpDownCounterMetric = exports.NoopCounterMetric = exports.NoopMetric = exports.NoopMeter = void 0;\n/**\n * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses\n * constant NoopMetrics for all of its methods.\n */\nclass NoopMeter {\n    constructor() { }\n    /**\n     * @see {@link Meter.createHistogram}\n     */\n    createHistogram(_name, _options) {\n        return exports.NOOP_HISTOGRAM_METRIC;\n    }\n    /**\n     * @see {@link Meter.createCounter}\n     */\n    createCounter(_name, _options) {\n        return exports.NOOP_COUNTER_METRIC;\n    }\n    /**\n     * @see {@link Meter.createUpDownCounter}\n     */\n    createUpDownCounter(_name, _options) {\n        return exports.NOOP_UP_DOWN_COUNTER_METRIC;\n    }\n    /**\n     * @see {@link Meter.createObservableGauge}\n     */\n    createObservableGauge(_name, _options) {\n        return exports.NOOP_OBSERVABLE_GAUGE_METRIC;\n    }\n    /**\n     * @see {@link Meter.createObservableCounter}\n     */\n    createObservableCounter(_name, _options) {\n        return exports.NOOP_OBSERVABLE_COUNTER_METRIC;\n    }\n    /**\n     * @see {@link Meter.createObservableUpDownCounter}\n     */\n    createObservableUpDownCounter(_name, _options) {\n        return exports.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC;\n    }\n    /**\n     * @see {@link Meter.addBatchObservableCallback}\n     */\n    addBatchObservableCallback(_callback, _observables) { }\n    /**\n     * @see {@link Meter.removeBatchObservableCallback}\n     */\n    removeBatchObservableCallback(_callback) { }\n}\nexports.NoopMeter = NoopMeter;\nclass NoopMetric {\n}\nexports.NoopMetric = NoopMetric;\nclass NoopCounterMetric extends NoopMetric {\n    add(_value, _attributes) { }\n}\nexports.NoopCounterMetric = NoopCounterMetric;\nclass NoopUpDownCounterMetric extends NoopMetric {\n    add(_value, _attributes) { }\n}\nexports.NoopUpDownCounterMetric = NoopUpDownCounterMetric;\nclass NoopHistogramMetric extends NoopMetric {\n    record(_value, _attributes) { }\n}\nexports.NoopHistogramMetric = NoopHistogramMetric;\nclass NoopObservableMetric {\n    addCallback(_callback) { }\n    removeCallback(_callback) { }\n}\nexports.NoopObservableMetric = NoopObservableMetric;\nclass NoopObservableCounterMetric extends NoopObservableMetric {\n}\nexports.NoopObservableCounterMetric = NoopObservableCounterMetric;\nclass NoopObservableGaugeMetric extends NoopObservableMetric {\n}\nexports.NoopObservableGaugeMetric = NoopObservableGaugeMetric;\nclass NoopObservableUpDownCounterMetric extends NoopObservableMetric {\n}\nexports.NoopObservableUpDownCounterMetric = NoopObservableUpDownCounterMetric;\nexports.NOOP_METER = new NoopMeter();\n// Synchronous instruments\nexports.NOOP_COUNTER_METRIC = new NoopCounterMetric();\nexports.NOOP_HISTOGRAM_METRIC = new NoopHistogramMetric();\nexports.NOOP_UP_DOWN_COUNTER_METRIC = new NoopUpDownCounterMetric();\n// Asynchronous instruments\nexports.NOOP_OBSERVABLE_COUNTER_METRIC = new NoopObservableCounterMetric();\nexports.NOOP_OBSERVABLE_GAUGE_METRIC = new NoopObservableGaugeMetric();\nexports.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC = new NoopObservableUpDownCounterMetric();\n/**\n * Create a no-op Meter\n */\nfunction createNoopMeter() {\n    return exports.NOOP_METER;\n}\nexports.createNoopMeter = createNoopMeter;\n//# sourceMappingURL=NoopMeter.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ValueType = void 0;\n/** The Type of value. It describes how the data is reported. */\nvar ValueType;\n(function (ValueType) {\n    ValueType[ValueType[\"INT\"] = 0] = \"INT\";\n    ValueType[ValueType[\"DOUBLE\"] = 1] = \"DOUBLE\";\n})(ValueType = exports.ValueType || (exports.ValueType = {}));\n//# sourceMappingURL=Metric.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultTextMapSetter = exports.defaultTextMapGetter = void 0;\nexports.defaultTextMapGetter = {\n    get(carrier, key) {\n        if (carrier == null) {\n            return undefined;\n        }\n        return carrier[key];\n    },\n    keys(carrier) {\n        if (carrier == null) {\n            return [];\n        }\n        return Object.keys(carrier);\n    },\n};\nexports.defaultTextMapSetter = {\n    set(carrier, key, value) {\n        if (carrier == null) {\n            return;\n        }\n        carrier[key] = value;\n    },\n};\n//# sourceMappingURL=TextMapPropagator.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopContextManager = void 0;\nconst context_1 = require(\"./context\");\nclass NoopContextManager {\n    active() {\n        return context_1.ROOT_CONTEXT;\n    }\n    with(_context, fn, thisArg, ...args) {\n        return fn.call(thisArg, ...args);\n    }\n    bind(_context, target) {\n        return target;\n    }\n    enable() {\n        return this;\n    }\n    disable() {\n        return this;\n    }\n}\nexports.NoopContextManager = NoopContextManager;\n//# sourceMappingURL=NoopContextManager.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContextAPI = void 0;\nconst NoopContextManager_1 = require(\"../context/NoopContextManager\");\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'context';\nconst NOOP_CONTEXT_MANAGER = new NoopContextManager_1.NoopContextManager();\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Context API\n */\nclass ContextAPI {\n    /** Empty private constructor prevents end users from constructing a new instance of the API */\n    constructor() { }\n    /** Get the singleton instance of the Context API */\n    static getInstance() {\n        if (!this._instance) {\n            this._instance = new ContextAPI();\n        }\n        return this._instance;\n    }\n    /**\n     * Set the current context manager.\n     *\n     * @returns true if the context manager was successfully registered, else false\n     */\n    setGlobalContextManager(contextManager) {\n        return (0, global_utils_1.registerGlobal)(API_NAME, contextManager, diag_1.DiagAPI.instance());\n    }\n    /**\n     * Get the currently active context\n     */\n    active() {\n        return this._getContextManager().active();\n    }\n    /**\n     * Execute a function with an active context\n     *\n     * @param context context to be active during function execution\n     * @param fn function to execute in a context\n     * @param thisArg optional receiver to be used for calling fn\n     * @param args optional arguments forwarded to fn\n     */\n    with(context, fn, thisArg, ...args) {\n        return this._getContextManager().with(context, fn, thisArg, ...args);\n    }\n    /**\n     * Bind a context to a target function or event emitter\n     *\n     * @param context context to bind to the event emitter or function. Defaults to the currently active context\n     * @param target function or event emitter to bind\n     */\n    bind(context, target) {\n        return this._getContextManager().bind(context, target);\n    }\n    _getContextManager() {\n        return (0, global_utils_1.getGlobal)(API_NAME) || NOOP_CONTEXT_MANAGER;\n    }\n    /** Disable and remove the global context manager */\n    disable() {\n        this._getContextManager().disable();\n        (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n    }\n}\nexports.ContextAPI = ContextAPI;\n//# sourceMappingURL=context.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceFlags = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar TraceFlags;\n(function (TraceFlags) {\n    /** Represents no flag set. */\n    TraceFlags[TraceFlags[\"NONE\"] = 0] = \"NONE\";\n    /** Bit to represent whether trace is sampled in trace flags. */\n    TraceFlags[TraceFlags[\"SAMPLED\"] = 1] = \"SAMPLED\";\n})(TraceFlags = exports.TraceFlags || (exports.TraceFlags = {}));\n//# sourceMappingURL=trace_flags.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = void 0;\nconst trace_flags_1 = require(\"./trace_flags\");\nexports.INVALID_SPANID = '0000000000000000';\nexports.INVALID_TRACEID = '00000000000000000000000000000000';\nexports.INVALID_SPAN_CONTEXT = {\n    traceId: exports.INVALID_TRACEID,\n    spanId: exports.INVALID_SPANID,\n    traceFlags: trace_flags_1.TraceFlags.NONE,\n};\n//# sourceMappingURL=invalid-span-constants.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NonRecordingSpan = void 0;\nconst invalid_span_constants_1 = require(\"./invalid-span-constants\");\n/**\n * The NonRecordingSpan is the default {@link Span} that is used when no Span\n * implementation is available. All operations are no-op including context\n * propagation.\n */\nclass NonRecordingSpan {\n    constructor(_spanContext = invalid_span_constants_1.INVALID_SPAN_CONTEXT) {\n        this._spanContext = _spanContext;\n    }\n    // Returns a SpanContext.\n    spanContext() {\n        return this._spanContext;\n    }\n    // By default does nothing\n    setAttribute(_key, _value) {\n        return this;\n    }\n    // By default does nothing\n    setAttributes(_attributes) {\n        return this;\n    }\n    // By default does nothing\n    addEvent(_name, _attributes) {\n        return this;\n    }\n    // By default does nothing\n    setStatus(_status) {\n        return this;\n    }\n    // By default does nothing\n    updateName(_name) {\n        return this;\n    }\n    // By default does nothing\n    end(_endTime) { }\n    // isRecording always returns false for NonRecordingSpan.\n    isRecording() {\n        return false;\n    }\n    // By default does nothing\n    recordException(_exception, _time) { }\n}\nexports.NonRecordingSpan = NonRecordingSpan;\n//# sourceMappingURL=NonRecordingSpan.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSpanContext = exports.setSpanContext = exports.deleteSpan = exports.setSpan = exports.getActiveSpan = exports.getSpan = void 0;\nconst context_1 = require(\"../context/context\");\nconst NonRecordingSpan_1 = require(\"./NonRecordingSpan\");\nconst context_2 = require(\"../api/context\");\n/**\n * span key\n */\nconst SPAN_KEY = (0, context_1.createContextKey)('OpenTelemetry Context Key SPAN');\n/**\n * Return the span if one exists\n *\n * @param context context to get span from\n */\nfunction getSpan(context) {\n    return context.getValue(SPAN_KEY) || undefined;\n}\nexports.getSpan = getSpan;\n/**\n * Gets the span from the current context, if one exists.\n */\nfunction getActiveSpan() {\n    return getSpan(context_2.ContextAPI.getInstance().active());\n}\nexports.getActiveSpan = getActiveSpan;\n/**\n * Set the span on a context\n *\n * @param context context to use as parent\n * @param span span to set active\n */\nfunction setSpan(context, span) {\n    return context.setValue(SPAN_KEY, span);\n}\nexports.setSpan = setSpan;\n/**\n * Remove current span stored in the context\n *\n * @param context context to delete span from\n */\nfunction deleteSpan(context) {\n    return context.deleteValue(SPAN_KEY);\n}\nexports.deleteSpan = deleteSpan;\n/**\n * Wrap span context in a NoopSpan and set as span in a new\n * context\n *\n * @param context context to set active span on\n * @param spanContext span context to be wrapped\n */\nfunction setSpanContext(context, spanContext) {\n    return setSpan(context, new NonRecordingSpan_1.NonRecordingSpan(spanContext));\n}\nexports.setSpanContext = setSpanContext;\n/**\n * Get the span context of the span if it exists.\n *\n * @param context context to get values from\n */\nfunction getSpanContext(context) {\n    var _a;\n    return (_a = getSpan(context)) === null || _a === void 0 ? void 0 : _a.spanContext();\n}\nexports.getSpanContext = getSpanContext;\n//# sourceMappingURL=context-utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapSpanContext = exports.isSpanContextValid = exports.isValidSpanId = exports.isValidTraceId = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst invalid_span_constants_1 = require(\"./invalid-span-constants\");\nconst NonRecordingSpan_1 = require(\"./NonRecordingSpan\");\nconst VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i;\nconst VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i;\nfunction isValidTraceId(traceId) {\n    return VALID_TRACEID_REGEX.test(traceId) && traceId !== invalid_span_constants_1.INVALID_TRACEID;\n}\nexports.isValidTraceId = isValidTraceId;\nfunction isValidSpanId(spanId) {\n    return VALID_SPANID_REGEX.test(spanId) && spanId !== invalid_span_constants_1.INVALID_SPANID;\n}\nexports.isValidSpanId = isValidSpanId;\n/**\n * Returns true if this {@link SpanContext} is valid.\n * @return true if this {@link SpanContext} is valid.\n */\nfunction isSpanContextValid(spanContext) {\n    return (isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId));\n}\nexports.isSpanContextValid = isSpanContextValid;\n/**\n * Wrap the given {@link SpanContext} in a new non-recording {@link Span}\n *\n * @param spanContext span context to be wrapped\n * @returns a new non-recording {@link Span} with the provided context\n */\nfunction wrapSpanContext(spanContext) {\n    return new NonRecordingSpan_1.NonRecordingSpan(spanContext);\n}\nexports.wrapSpanContext = wrapSpanContext;\n//# sourceMappingURL=spancontext-utils.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopTracer = void 0;\nconst context_1 = require(\"../api/context\");\nconst context_utils_1 = require(\"../trace/context-utils\");\nconst NonRecordingSpan_1 = require(\"./NonRecordingSpan\");\nconst spancontext_utils_1 = require(\"./spancontext-utils\");\nconst contextApi = context_1.ContextAPI.getInstance();\n/**\n * No-op implementations of {@link Tracer}.\n */\nclass NoopTracer {\n    // startSpan starts a noop span.\n    startSpan(name, options, context = contextApi.active()) {\n        const root = Boolean(options === null || options === void 0 ? void 0 : options.root);\n        if (root) {\n            return new NonRecordingSpan_1.NonRecordingSpan();\n        }\n        const parentFromContext = context && (0, context_utils_1.getSpanContext)(context);\n        if (isSpanContext(parentFromContext) &&\n            (0, spancontext_utils_1.isSpanContextValid)(parentFromContext)) {\n            return new NonRecordingSpan_1.NonRecordingSpan(parentFromContext);\n        }\n        else {\n            return new NonRecordingSpan_1.NonRecordingSpan();\n        }\n    }\n    startActiveSpan(name, arg2, arg3, arg4) {\n        let opts;\n        let ctx;\n        let fn;\n        if (arguments.length < 2) {\n            return;\n        }\n        else if (arguments.length === 2) {\n            fn = arg2;\n        }\n        else if (arguments.length === 3) {\n            opts = arg2;\n            fn = arg3;\n        }\n        else {\n            opts = arg2;\n            ctx = arg3;\n            fn = arg4;\n        }\n        const parentContext = ctx !== null && ctx !== void 0 ? ctx : contextApi.active();\n        const span = this.startSpan(name, opts, parentContext);\n        const contextWithSpanSet = (0, context_utils_1.setSpan)(parentContext, span);\n        return contextApi.with(contextWithSpanSet, fn, undefined, span);\n    }\n}\nexports.NoopTracer = NoopTracer;\nfunction isSpanContext(spanContext) {\n    return (typeof spanContext === 'object' &&\n        typeof spanContext['spanId'] === 'string' &&\n        typeof spanContext['traceId'] === 'string' &&\n        typeof spanContext['traceFlags'] === 'number');\n}\n//# sourceMappingURL=NoopTracer.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyTracer = void 0;\nconst NoopTracer_1 = require(\"./NoopTracer\");\nconst NOOP_TRACER = new NoopTracer_1.NoopTracer();\n/**\n * Proxy tracer provided by the proxy tracer provider\n */\nclass ProxyTracer {\n    constructor(_provider, name, version, options) {\n        this._provider = _provider;\n        this.name = name;\n        this.version = version;\n        this.options = options;\n    }\n    startSpan(name, options, context) {\n        return this._getTracer().startSpan(name, options, context);\n    }\n    startActiveSpan(_name, _options, _context, _fn) {\n        const tracer = this._getTracer();\n        return Reflect.apply(tracer.startActiveSpan, tracer, arguments);\n    }\n    /**\n     * Try to get a tracer from the proxy tracer provider.\n     * If the proxy tracer provider has no delegate, return a noop tracer.\n     */\n    _getTracer() {\n        if (this._delegate) {\n            return this._delegate;\n        }\n        const tracer = this._provider.getDelegateTracer(this.name, this.version, this.options);\n        if (!tracer) {\n            return NOOP_TRACER;\n        }\n        this._delegate = tracer;\n        return this._delegate;\n    }\n}\nexports.ProxyTracer = ProxyTracer;\n//# sourceMappingURL=ProxyTracer.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopTracerProvider = void 0;\nconst NoopTracer_1 = require(\"./NoopTracer\");\n/**\n * An implementation of the {@link TracerProvider} which returns an impotent\n * Tracer for all calls to `getTracer`.\n *\n * All operations are no-op.\n */\nclass NoopTracerProvider {\n    getTracer(_name, _version, _options) {\n        return new NoopTracer_1.NoopTracer();\n    }\n}\nexports.NoopTracerProvider = NoopTracerProvider;\n//# sourceMappingURL=NoopTracerProvider.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyTracerProvider = void 0;\nconst ProxyTracer_1 = require(\"./ProxyTracer\");\nconst NoopTracerProvider_1 = require(\"./NoopTracerProvider\");\nconst NOOP_TRACER_PROVIDER = new NoopTracerProvider_1.NoopTracerProvider();\n/**\n * Tracer provider which provides {@link ProxyTracer}s.\n *\n * Before a delegate is set, tracers provided are NoOp.\n *   When a delegate is set, traces are provided from the delegate.\n *   When a delegate is set after tracers have already been provided,\n *   all tracers already provided will use the provided delegate implementation.\n */\nclass ProxyTracerProvider {\n    /**\n     * Get a {@link ProxyTracer}\n     */\n    getTracer(name, version, options) {\n        var _a;\n        return ((_a = this.getDelegateTracer(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyTracer_1.ProxyTracer(this, name, version, options));\n    }\n    getDelegate() {\n        var _a;\n        return (_a = this._delegate) !== null && _a !== void 0 ? _a : NOOP_TRACER_PROVIDER;\n    }\n    /**\n     * Set the delegate tracer provider\n     */\n    setDelegate(delegate) {\n        this._delegate = delegate;\n    }\n    getDelegateTracer(name, version, options) {\n        var _a;\n        return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getTracer(name, version, options);\n    }\n}\nexports.ProxyTracerProvider = ProxyTracerProvider;\n//# sourceMappingURL=ProxyTracerProvider.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SamplingDecision = void 0;\n/**\n * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead.\n * A sampling decision that determines how a {@link Span} will be recorded\n * and collected.\n */\nvar SamplingDecision;\n(function (SamplingDecision) {\n    /**\n     * `Span.isRecording() === false`, span will not be recorded and all events\n     * and attributes will be dropped.\n     */\n    SamplingDecision[SamplingDecision[\"NOT_RECORD\"] = 0] = \"NOT_RECORD\";\n    /**\n     * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n     * MUST NOT be set.\n     */\n    SamplingDecision[SamplingDecision[\"RECORD\"] = 1] = \"RECORD\";\n    /**\n     * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n     * MUST be set.\n     */\n    SamplingDecision[SamplingDecision[\"RECORD_AND_SAMPLED\"] = 2] = \"RECORD_AND_SAMPLED\";\n})(SamplingDecision = exports.SamplingDecision || (exports.SamplingDecision = {}));\n//# sourceMappingURL=SamplingResult.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SpanKind = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar SpanKind;\n(function (SpanKind) {\n    /** Default value. Indicates that the span is used internally. */\n    SpanKind[SpanKind[\"INTERNAL\"] = 0] = \"INTERNAL\";\n    /**\n     * Indicates that the span covers server-side handling of an RPC or other\n     * remote request.\n     */\n    SpanKind[SpanKind[\"SERVER\"] = 1] = \"SERVER\";\n    /**\n     * Indicates that the span covers the client-side wrapper around an RPC or\n     * other remote request.\n     */\n    SpanKind[SpanKind[\"CLIENT\"] = 2] = \"CLIENT\";\n    /**\n     * Indicates that the span describes producer sending a message to a\n     * broker. Unlike client and server, there is no direct critical path latency\n     * relationship between producer and consumer spans.\n     */\n    SpanKind[SpanKind[\"PRODUCER\"] = 3] = \"PRODUCER\";\n    /**\n     * Indicates that the span describes consumer receiving a message from a\n     * broker. Unlike client and server, there is no direct critical path latency\n     * relationship between producer and consumer spans.\n     */\n    SpanKind[SpanKind[\"CONSUMER\"] = 4] = \"CONSUMER\";\n})(SpanKind = exports.SpanKind || (exports.SpanKind = {}));\n//# sourceMappingURL=span_kind.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SpanStatusCode = void 0;\n/**\n * An enumeration of status codes.\n */\nvar SpanStatusCode;\n(function (SpanStatusCode) {\n    /**\n     * The default status.\n     */\n    SpanStatusCode[SpanStatusCode[\"UNSET\"] = 0] = \"UNSET\";\n    /**\n     * The operation has been validated by an Application developer or\n     * Operator to have completed successfully.\n     */\n    SpanStatusCode[SpanStatusCode[\"OK\"] = 1] = \"OK\";\n    /**\n     * The operation contains an error.\n     */\n    SpanStatusCode[SpanStatusCode[\"ERROR\"] = 2] = \"ERROR\";\n})(SpanStatusCode = exports.SpanStatusCode || (exports.SpanStatusCode = {}));\n//# sourceMappingURL=status.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateValue = exports.validateKey = void 0;\nconst VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]';\nconst VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`;\nconst VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`;\nconst VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`);\nconst VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/;\nconst INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/;\n/**\n * Key is opaque string up to 256 characters printable. It MUST begin with a\n * lowercase letter, and can only contain lowercase letters a-z, digits 0-9,\n * underscores _, dashes -, asterisks *, and forward slashes /.\n * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the\n * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key.\n * see https://www.w3.org/TR/trace-context/#key\n */\nfunction validateKey(key) {\n    return VALID_KEY_REGEX.test(key);\n}\nexports.validateKey = validateKey;\n/**\n * Value is opaque string up to 256 characters printable ASCII RFC0020\n * characters (i.e., the range 0x20 to 0x7E) except comma , and =.\n */\nfunction validateValue(value) {\n    return (VALID_VALUE_BASE_REGEX.test(value) &&\n        !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value));\n}\nexports.validateValue = validateValue;\n//# sourceMappingURL=tracestate-validators.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceStateImpl = void 0;\nconst tracestate_validators_1 = require(\"./tracestate-validators\");\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n/**\n * TraceState must be a class and not a simple object type because of the spec\n * requirement (https://www.w3.org/TR/trace-context/#tracestate-field).\n *\n * Here is the list of allowed mutations:\n * - New key-value pair should be added into the beginning of the list\n * - The value of any key can be updated. Modified keys MUST be moved to the\n * beginning of the list.\n */\nclass TraceStateImpl {\n    constructor(rawTraceState) {\n        this._internalState = new Map();\n        if (rawTraceState)\n            this._parse(rawTraceState);\n    }\n    set(key, value) {\n        // TODO: Benchmark the different approaches(map vs list) and\n        // use the faster one.\n        const traceState = this._clone();\n        if (traceState._internalState.has(key)) {\n            traceState._internalState.delete(key);\n        }\n        traceState._internalState.set(key, value);\n        return traceState;\n    }\n    unset(key) {\n        const traceState = this._clone();\n        traceState._internalState.delete(key);\n        return traceState;\n    }\n    get(key) {\n        return this._internalState.get(key);\n    }\n    serialize() {\n        return this._keys()\n            .reduce((agg, key) => {\n            agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n            return agg;\n        }, [])\n            .join(LIST_MEMBERS_SEPARATOR);\n    }\n    _parse(rawTraceState) {\n        if (rawTraceState.length > MAX_TRACE_STATE_LEN)\n            return;\n        this._internalState = rawTraceState\n            .split(LIST_MEMBERS_SEPARATOR)\n            .reverse() // Store in reverse so new keys (.set(...)) will be placed at the beginning\n            .reduce((agg, part) => {\n            const listMember = part.trim(); // Optional Whitespace (OWS) handling\n            const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER);\n            if (i !== -1) {\n                const key = listMember.slice(0, i);\n                const value = listMember.slice(i + 1, part.length);\n                if ((0, tracestate_validators_1.validateKey)(key) && (0, tracestate_validators_1.validateValue)(value)) {\n                    agg.set(key, value);\n                }\n                else {\n                    // TODO: Consider to add warning log\n                }\n            }\n            return agg;\n        }, new Map());\n        // Because of the reverse() requirement, trunc must be done after map is created\n        if (this._internalState.size > MAX_TRACE_STATE_ITEMS) {\n            this._internalState = new Map(Array.from(this._internalState.entries())\n                .reverse() // Use reverse same as original tracestate parse chain\n                .slice(0, MAX_TRACE_STATE_ITEMS));\n        }\n    }\n    _keys() {\n        return Array.from(this._internalState.keys()).reverse();\n    }\n    _clone() {\n        const traceState = new TraceStateImpl();\n        traceState._internalState = new Map(this._internalState);\n        return traceState;\n    }\n}\nexports.TraceStateImpl = TraceStateImpl;\n//# sourceMappingURL=tracestate-impl.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createTraceState = void 0;\nconst tracestate_impl_1 = require(\"./tracestate-impl\");\nfunction createTraceState(rawTraceState) {\n    return new tracestate_impl_1.TraceStateImpl(rawTraceState);\n}\nexports.createTraceState = createTraceState;\n//# sourceMappingURL=utils.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.context = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst context_1 = require(\"./api/context\");\n/** Entrypoint for context API */\nexports.context = context_1.ContextAPI.getInstance();\n//# sourceMappingURL=context-api.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.diag = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst diag_1 = require(\"./api/diag\");\n/**\n * Entrypoint for Diag API.\n * Defines Diagnostic handler used for internal diagnostic logging operations.\n * The default provides a Noop DiagLogger implementation which may be changed via the\n * diag.setLogger(logger: DiagLogger) function.\n */\nexports.diag = diag_1.DiagAPI.instance();\n//# sourceMappingURL=diag-api.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NOOP_METER_PROVIDER = exports.NoopMeterProvider = void 0;\nconst NoopMeter_1 = require(\"./NoopMeter\");\n/**\n * An implementation of the {@link MeterProvider} which returns an impotent Meter\n * for all calls to `getMeter`\n */\nclass NoopMeterProvider {\n    getMeter(_name, _version, _options) {\n        return NoopMeter_1.NOOP_METER;\n    }\n}\nexports.NoopMeterProvider = NoopMeterProvider;\nexports.NOOP_METER_PROVIDER = new NoopMeterProvider();\n//# sourceMappingURL=NoopMeterProvider.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MetricsAPI = void 0;\nconst NoopMeterProvider_1 = require(\"../metrics/NoopMeterProvider\");\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'metrics';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Metrics API\n */\nclass MetricsAPI {\n    /** Empty private constructor prevents end users from constructing a new instance of the API */\n    constructor() { }\n    /** Get the singleton instance of the Metrics API */\n    static getInstance() {\n        if (!this._instance) {\n            this._instance = new MetricsAPI();\n        }\n        return this._instance;\n    }\n    /**\n     * Set the current global meter provider.\n     * Returns true if the meter provider was successfully registered, else false.\n     */\n    setGlobalMeterProvider(provider) {\n        return (0, global_utils_1.registerGlobal)(API_NAME, provider, diag_1.DiagAPI.instance());\n    }\n    /**\n     * Returns the global meter provider.\n     */\n    getMeterProvider() {\n        return (0, global_utils_1.getGlobal)(API_NAME) || NoopMeterProvider_1.NOOP_METER_PROVIDER;\n    }\n    /**\n     * Returns a meter from the global meter provider.\n     */\n    getMeter(name, version, options) {\n        return this.getMeterProvider().getMeter(name, version, options);\n    }\n    /** Remove the global meter provider */\n    disable() {\n        (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n    }\n}\nexports.MetricsAPI = MetricsAPI;\n//# sourceMappingURL=metrics.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.metrics = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst metrics_1 = require(\"./api/metrics\");\n/** Entrypoint for metrics API */\nexports.metrics = metrics_1.MetricsAPI.getInstance();\n//# sourceMappingURL=metrics-api.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopTextMapPropagator = void 0;\n/**\n * No-op implementations of {@link TextMapPropagator}.\n */\nclass NoopTextMapPropagator {\n    /** Noop inject function does nothing */\n    inject(_context, _carrier) { }\n    /** Noop extract function does nothing and returns the input context */\n    extract(context, _carrier) {\n        return context;\n    }\n    fields() {\n        return [];\n    }\n}\nexports.NoopTextMapPropagator = NoopTextMapPropagator;\n//# sourceMappingURL=NoopTextMapPropagator.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deleteBaggage = exports.setBaggage = exports.getActiveBaggage = exports.getBaggage = void 0;\nconst context_1 = require(\"../api/context\");\nconst context_2 = require(\"../context/context\");\n/**\n * Baggage key\n */\nconst BAGGAGE_KEY = (0, context_2.createContextKey)('OpenTelemetry Baggage Key');\n/**\n * Retrieve the current baggage from the given context\n *\n * @param {Context} Context that manage all context values\n * @returns {Baggage} Extracted baggage from the context\n */\nfunction getBaggage(context) {\n    return context.getValue(BAGGAGE_KEY) || undefined;\n}\nexports.getBaggage = getBaggage;\n/**\n * Retrieve the current baggage from the active/current context\n *\n * @returns {Baggage} Extracted baggage from the context\n */\nfunction getActiveBaggage() {\n    return getBaggage(context_1.ContextAPI.getInstance().active());\n}\nexports.getActiveBaggage = getActiveBaggage;\n/**\n * Store a baggage in the given context\n *\n * @param {Context} Context that manage all context values\n * @param {Baggage} baggage that will be set in the actual context\n */\nfunction setBaggage(context, baggage) {\n    return context.setValue(BAGGAGE_KEY, baggage);\n}\nexports.setBaggage = setBaggage;\n/**\n * Delete the baggage stored in the given context\n *\n * @param {Context} Context that manage all context values\n */\nfunction deleteBaggage(context) {\n    return context.deleteValue(BAGGAGE_KEY);\n}\nexports.deleteBaggage = deleteBaggage;\n//# sourceMappingURL=context-helpers.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PropagationAPI = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst NoopTextMapPropagator_1 = require(\"../propagation/NoopTextMapPropagator\");\nconst TextMapPropagator_1 = require(\"../propagation/TextMapPropagator\");\nconst context_helpers_1 = require(\"../baggage/context-helpers\");\nconst utils_1 = require(\"../baggage/utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'propagation';\nconst NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator_1.NoopTextMapPropagator();\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Propagation API\n */\nclass PropagationAPI {\n    /** Empty private constructor prevents end users from constructing a new instance of the API */\n    constructor() {\n        this.createBaggage = utils_1.createBaggage;\n        this.getBaggage = context_helpers_1.getBaggage;\n        this.getActiveBaggage = context_helpers_1.getActiveBaggage;\n        this.setBaggage = context_helpers_1.setBaggage;\n        this.deleteBaggage = context_helpers_1.deleteBaggage;\n    }\n    /** Get the singleton instance of the Propagator API */\n    static getInstance() {\n        if (!this._instance) {\n            this._instance = new PropagationAPI();\n        }\n        return this._instance;\n    }\n    /**\n     * Set the current propagator.\n     *\n     * @returns true if the propagator was successfully registered, else false\n     */\n    setGlobalPropagator(propagator) {\n        return (0, global_utils_1.registerGlobal)(API_NAME, propagator, diag_1.DiagAPI.instance());\n    }\n    /**\n     * Inject context into a carrier to be propagated inter-process\n     *\n     * @param context Context carrying tracing data to inject\n     * @param carrier carrier to inject context into\n     * @param setter Function used to set values on the carrier\n     */\n    inject(context, carrier, setter = TextMapPropagator_1.defaultTextMapSetter) {\n        return this._getGlobalPropagator().inject(context, carrier, setter);\n    }\n    /**\n     * Extract context from a carrier\n     *\n     * @param context Context which the newly created context will inherit from\n     * @param carrier Carrier to extract context from\n     * @param getter Function used to extract keys from a carrier\n     */\n    extract(context, carrier, getter = TextMapPropagator_1.defaultTextMapGetter) {\n        return this._getGlobalPropagator().extract(context, carrier, getter);\n    }\n    /**\n     * Return a list of all fields which may be used by the propagator.\n     */\n    fields() {\n        return this._getGlobalPropagator().fields();\n    }\n    /** Remove the global propagator */\n    disable() {\n        (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n    }\n    _getGlobalPropagator() {\n        return (0, global_utils_1.getGlobal)(API_NAME) || NOOP_TEXT_MAP_PROPAGATOR;\n    }\n}\nexports.PropagationAPI = PropagationAPI;\n//# sourceMappingURL=propagation.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propagation = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst propagation_1 = require(\"./api/propagation\");\n/** Entrypoint for propagation API */\nexports.propagation = propagation_1.PropagationAPI.getInstance();\n//# sourceMappingURL=propagation-api.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceAPI = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst ProxyTracerProvider_1 = require(\"../trace/ProxyTracerProvider\");\nconst spancontext_utils_1 = require(\"../trace/spancontext-utils\");\nconst context_utils_1 = require(\"../trace/context-utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'trace';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Tracing API\n */\nclass TraceAPI {\n    /** Empty private constructor prevents end users from constructing a new instance of the API */\n    constructor() {\n        this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();\n        this.wrapSpanContext = spancontext_utils_1.wrapSpanContext;\n        this.isSpanContextValid = spancontext_utils_1.isSpanContextValid;\n        this.deleteSpan = context_utils_1.deleteSpan;\n        this.getSpan = context_utils_1.getSpan;\n        this.getActiveSpan = context_utils_1.getActiveSpan;\n        this.getSpanContext = context_utils_1.getSpanContext;\n        this.setSpan = context_utils_1.setSpan;\n        this.setSpanContext = context_utils_1.setSpanContext;\n    }\n    /** Get the singleton instance of the Trace API */\n    static getInstance() {\n        if (!this._instance) {\n            this._instance = new TraceAPI();\n        }\n        return this._instance;\n    }\n    /**\n     * Set the current global tracer.\n     *\n     * @returns true if the tracer provider was successfully registered, else false\n     */\n    setGlobalTracerProvider(provider) {\n        const success = (0, global_utils_1.registerGlobal)(API_NAME, this._proxyTracerProvider, diag_1.DiagAPI.instance());\n        if (success) {\n            this._proxyTracerProvider.setDelegate(provider);\n        }\n        return success;\n    }\n    /**\n     * Returns the global tracer provider.\n     */\n    getTracerProvider() {\n        return (0, global_utils_1.getGlobal)(API_NAME) || this._proxyTracerProvider;\n    }\n    /**\n     * Returns a tracer from the global tracer provider.\n     */\n    getTracer(name, version) {\n        return this.getTracerProvider().getTracer(name, version);\n    }\n    /** Remove the global tracer provider */\n    disable() {\n        (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n        this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();\n    }\n}\nexports.TraceAPI = TraceAPI;\n//# sourceMappingURL=trace.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.trace = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst trace_1 = require(\"./api/trace\");\n/** Entrypoint for trace API */\nexports.trace = trace_1.TraceAPI.getInstance();\n//# sourceMappingURL=trace-api.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.trace = exports.propagation = exports.metrics = exports.diag = exports.context = exports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = exports.isValidSpanId = exports.isValidTraceId = exports.isSpanContextValid = exports.createTraceState = exports.TraceFlags = exports.SpanStatusCode = exports.SpanKind = exports.SamplingDecision = exports.ProxyTracerProvider = exports.ProxyTracer = exports.defaultTextMapSetter = exports.defaultTextMapGetter = exports.ValueType = exports.createNoopMeter = exports.DiagLogLevel = exports.DiagConsoleLogger = exports.ROOT_CONTEXT = exports.createContextKey = exports.baggageEntryMetadataFromString = void 0;\nvar utils_1 = require(\"./baggage/utils\");\nObject.defineProperty(exports, \"baggageEntryMetadataFromString\", { enumerable: true, get: function () { return utils_1.baggageEntryMetadataFromString; } });\n// Context APIs\nvar context_1 = require(\"./context/context\");\nObject.defineProperty(exports, \"createContextKey\", { enumerable: true, get: function () { return context_1.createContextKey; } });\nObject.defineProperty(exports, \"ROOT_CONTEXT\", { enumerable: true, get: function () { return context_1.ROOT_CONTEXT; } });\n// Diag APIs\nvar consoleLogger_1 = require(\"./diag/consoleLogger\");\nObject.defineProperty(exports, \"DiagConsoleLogger\", { enumerable: true, get: function () { return consoleLogger_1.DiagConsoleLogger; } });\nvar types_1 = require(\"./diag/types\");\nObject.defineProperty(exports, \"DiagLogLevel\", { enumerable: true, get: function () { return types_1.DiagLogLevel; } });\n// Metrics APIs\nvar NoopMeter_1 = require(\"./metrics/NoopMeter\");\nObject.defineProperty(exports, \"createNoopMeter\", { enumerable: true, get: function () { return NoopMeter_1.createNoopMeter; } });\nvar Metric_1 = require(\"./metrics/Metric\");\nObject.defineProperty(exports, \"ValueType\", { enumerable: true, get: function () { return Metric_1.ValueType; } });\n// Propagation APIs\nvar TextMapPropagator_1 = require(\"./propagation/TextMapPropagator\");\nObject.defineProperty(exports, \"defaultTextMapGetter\", { enumerable: true, get: function () { return TextMapPropagator_1.defaultTextMapGetter; } });\nObject.defineProperty(exports, \"defaultTextMapSetter\", { enumerable: true, get: function () { return TextMapPropagator_1.defaultTextMapSetter; } });\nvar ProxyTracer_1 = require(\"./trace/ProxyTracer\");\nObject.defineProperty(exports, \"ProxyTracer\", { enumerable: true, get: function () { return ProxyTracer_1.ProxyTracer; } });\nvar ProxyTracerProvider_1 = require(\"./trace/ProxyTracerProvider\");\nObject.defineProperty(exports, \"ProxyTracerProvider\", { enumerable: true, get: function () { return ProxyTracerProvider_1.ProxyTracerProvider; } });\nvar SamplingResult_1 = require(\"./trace/SamplingResult\");\nObject.defineProperty(exports, \"SamplingDecision\", { enumerable: true, get: function () { return SamplingResult_1.SamplingDecision; } });\nvar span_kind_1 = require(\"./trace/span_kind\");\nObject.defineProperty(exports, \"SpanKind\", { enumerable: true, get: function () { return span_kind_1.SpanKind; } });\nvar status_1 = require(\"./trace/status\");\nObject.defineProperty(exports, \"SpanStatusCode\", { enumerable: true, get: function () { return status_1.SpanStatusCode; } });\nvar trace_flags_1 = require(\"./trace/trace_flags\");\nObject.defineProperty(exports, \"TraceFlags\", { enumerable: true, get: function () { return trace_flags_1.TraceFlags; } });\nvar utils_2 = require(\"./trace/internal/utils\");\nObject.defineProperty(exports, \"createTraceState\", { enumerable: true, get: function () { return utils_2.createTraceState; } });\nvar spancontext_utils_1 = require(\"./trace/spancontext-utils\");\nObject.defineProperty(exports, \"isSpanContextValid\", { enumerable: true, get: function () { return spancontext_utils_1.isSpanContextValid; } });\nObject.defineProperty(exports, \"isValidTraceId\", { enumerable: true, get: function () { return spancontext_utils_1.isValidTraceId; } });\nObject.defineProperty(exports, \"isValidSpanId\", { enumerable: true, get: function () { return spancontext_utils_1.isValidSpanId; } });\nvar invalid_span_constants_1 = require(\"./trace/invalid-span-constants\");\nObject.defineProperty(exports, \"INVALID_SPANID\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_SPANID; } });\nObject.defineProperty(exports, \"INVALID_TRACEID\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_TRACEID; } });\nObject.defineProperty(exports, \"INVALID_SPAN_CONTEXT\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_SPAN_CONTEXT; } });\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst context_api_1 = require(\"./context-api\");\nObject.defineProperty(exports, \"context\", { enumerable: true, get: function () { return context_api_1.context; } });\nconst diag_api_1 = require(\"./diag-api\");\nObject.defineProperty(exports, \"diag\", { enumerable: true, get: function () { return diag_api_1.diag; } });\nconst metrics_api_1 = require(\"./metrics-api\");\nObject.defineProperty(exports, \"metrics\", { enumerable: true, get: function () { return metrics_api_1.metrics; } });\nconst propagation_api_1 = require(\"./propagation-api\");\nObject.defineProperty(exports, \"propagation\", { enumerable: true, get: function () { return propagation_api_1.propagation; } });\nconst trace_api_1 = require(\"./trace-api\");\nObject.defineProperty(exports, \"trace\", { enumerable: true, get: function () { return trace_api_1.trace; } });\n// Default export.\nexports.default = {\n    context: context_api_1.context,\n    diag: diag_api_1.diag,\n    metrics: metrics_api_1.metrics,\n    propagation: propagation_api_1.propagation,\n    trace: trace_api_1.trace,\n};\n//# sourceMappingURL=index.js.map","import { MessageType, PbLong, UnknownFieldHandler, WireType, reflectionMergePartial, typeofJsonValue } from \"@protobuf-ts/runtime\";\n\n//#region generated/ts/google/protobuf/duration.ts\nvar Duration$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"google.protobuf.Duration\", [{\n\t\t\tno: 1,\n\t\t\tname: \"seconds\",\n\t\t\tkind: \"scalar\",\n\t\t\tT: 3,\n\t\t\tL: 0\n\t\t}, {\n\t\t\tno: 2,\n\t\t\tname: \"nanos\",\n\t\t\tkind: \"scalar\",\n\t\t\tT: 5\n\t\t}]);\n\t}\n\t/**\n\t* Encode `Duration` to JSON string like \"3.000001s\".\n\t*/\n\tinternalJsonWrite(message, options) {\n\t\tlet s = PbLong.from(message.seconds).toNumber();\n\t\tif (s > 315576e6 || s < -315576e6) throw new Error(\"Duration value out of range.\");\n\t\tlet text = message.seconds.toString();\n\t\tif (s === 0 && message.nanos < 0) text = \"-\" + text;\n\t\tif (message.nanos !== 0) {\n\t\t\tlet nanosStr = Math.abs(message.nanos).toString();\n\t\t\tnanosStr = \"0\".repeat(9 - nanosStr.length) + nanosStr;\n\t\t\tif (nanosStr.substring(3) === \"000000\") nanosStr = nanosStr.substring(0, 3);\n\t\t\telse if (nanosStr.substring(6) === \"000\") nanosStr = nanosStr.substring(0, 6);\n\t\t\ttext += \".\" + nanosStr;\n\t\t}\n\t\treturn text + \"s\";\n\t}\n\t/**\n\t* Decode `Duration` from JSON string like \"3.000001s\"\n\t*/\n\tinternalJsonRead(json, options, target) {\n\t\tif (typeof json !== \"string\") throw new Error(\"Unable to parse Duration from JSON \" + typeofJsonValue(json) + \". Expected string.\");\n\t\tlet match = json.match(/^(-?)([0-9]+)(?:\\.([0-9]+))?s/);\n\t\tif (match === null) throw new Error(\"Unable to parse Duration from JSON string. Invalid format.\");\n\t\tif (!target) target = this.create();\n\t\tlet [, sign, secs, nanos] = match;\n\t\tlet longSeconds = PbLong.from(sign + secs);\n\t\tif (longSeconds.toNumber() > 315576e6 || longSeconds.toNumber() < -315576e6) throw new Error(\"Unable to parse Duration from JSON string. Value out of range.\");\n\t\ttarget.seconds = longSeconds.toBigInt();\n\t\tif (typeof nanos == \"string\") {\n\t\t\tlet nanosStr = sign + nanos + \"0\".repeat(9 - nanos.length);\n\t\t\ttarget.nanos = parseInt(nanosStr);\n\t\t}\n\t\treturn target;\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.seconds = 0n;\n\t\tmessage.nanos = 0;\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.seconds = reader.int64().toBigInt();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tmessage.nanos = reader.int32();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tif (message.seconds !== 0n) writer.tag(1, WireType.Varint).int64(message.seconds);\n\t\tif (message.nanos !== 0) writer.tag(2, WireType.Varint).int32(message.nanos);\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message google.protobuf.Duration\n*/\nconst Duration = new Duration$Type();\n\n//#endregion\nexport { Duration };\n//# sourceMappingURL=duration-B3fwb4jB.js.map","import { MessageType, PbLong, UnknownFieldHandler, WireType, reflectionMergePartial, typeofJsonValue } from \"@protobuf-ts/runtime\";\n\n//#region generated/ts/google/protobuf/timestamp.ts\nvar Timestamp$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"google.protobuf.Timestamp\", [{\n\t\t\tno: 1,\n\t\t\tname: \"seconds\",\n\t\t\tkind: \"scalar\",\n\t\t\tT: 3,\n\t\t\tL: 0\n\t\t}, {\n\t\t\tno: 2,\n\t\t\tname: \"nanos\",\n\t\t\tkind: \"scalar\",\n\t\t\tT: 5\n\t\t}]);\n\t}\n\t/**\n\t* Creates a new `Timestamp` for the current time.\n\t*/\n\tnow() {\n\t\tconst msg = this.create();\n\t\tconst ms = Date.now();\n\t\tmsg.seconds = PbLong.from(Math.floor(ms / 1e3)).toBigInt();\n\t\tmsg.nanos = ms % 1e3 * 1e6;\n\t\treturn msg;\n\t}\n\t/**\n\t* Converts a `Timestamp` to a JavaScript Date.\n\t*/\n\ttoDate(message) {\n\t\treturn new Date(PbLong.from(message.seconds).toNumber() * 1e3 + Math.ceil(message.nanos / 1e6));\n\t}\n\t/**\n\t* Converts a JavaScript Date to a `Timestamp`.\n\t*/\n\tfromDate(date) {\n\t\tconst msg = this.create();\n\t\tconst ms = date.getTime();\n\t\tmsg.seconds = PbLong.from(Math.floor(ms / 1e3)).toBigInt();\n\t\tmsg.nanos = (ms % 1e3 + (ms < 0 && ms % 1e3 !== 0 ? 1e3 : 0)) * 1e6;\n\t\treturn msg;\n\t}\n\t/**\n\t* In JSON format, the `Timestamp` type is encoded as a string\n\t* in the RFC 3339 format.\n\t*/\n\tinternalJsonWrite(message, options) {\n\t\tlet ms = PbLong.from(message.seconds).toNumber() * 1e3;\n\t\tif (ms < Date.parse(\"0001-01-01T00:00:00Z\") || ms > Date.parse(\"9999-12-31T23:59:59Z\")) throw new Error(\"Unable to encode Timestamp to JSON. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.\");\n\t\tif (message.nanos < 0) throw new Error(\"Unable to encode invalid Timestamp to JSON. Nanos must not be negative.\");\n\t\tlet z = \"Z\";\n\t\tif (message.nanos > 0) {\n\t\t\tlet nanosStr = (message.nanos + 1e9).toString().substring(1);\n\t\t\tif (nanosStr.substring(3) === \"000000\") z = \".\" + nanosStr.substring(0, 3) + \"Z\";\n\t\t\telse if (nanosStr.substring(6) === \"000\") z = \".\" + nanosStr.substring(0, 6) + \"Z\";\n\t\t\telse z = \".\" + nanosStr + \"Z\";\n\t\t}\n\t\treturn new Date(ms).toISOString().replace(\".000Z\", z);\n\t}\n\t/**\n\t* In JSON format, the `Timestamp` type is encoded as a string\n\t* in the RFC 3339 format.\n\t*/\n\tinternalJsonRead(json, options, target) {\n\t\tif (typeof json !== \"string\") throw new Error(\"Unable to parse Timestamp from JSON \" + typeofJsonValue(json) + \".\");\n\t\tlet matches = json.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:Z|\\.([0-9]{3,9})Z|([+-][0-9][0-9]:[0-9][0-9]))$/);\n\t\tif (!matches) throw new Error(\"Unable to parse Timestamp from JSON. Invalid format.\");\n\t\tlet ms = Date.parse(matches[1] + \"-\" + matches[2] + \"-\" + matches[3] + \"T\" + matches[4] + \":\" + matches[5] + \":\" + matches[6] + (matches[8] ? matches[8] : \"Z\"));\n\t\tif (Number.isNaN(ms)) throw new Error(\"Unable to parse Timestamp from JSON. Invalid value.\");\n\t\tif (ms < Date.parse(\"0001-01-01T00:00:00Z\") || ms > Date.parse(\"9999-12-31T23:59:59Z\")) throw new globalThis.Error(\"Unable to parse Timestamp from JSON. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.\");\n\t\tif (!target) target = this.create();\n\t\ttarget.seconds = PbLong.from(ms / 1e3).toBigInt();\n\t\ttarget.nanos = 0;\n\t\tif (matches[7]) target.nanos = parseInt(\"1\" + matches[7] + \"0\".repeat(9 - matches[7].length)) - 1e9;\n\t\treturn target;\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.seconds = 0n;\n\t\tmessage.nanos = 0;\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.seconds = reader.int64().toBigInt();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tmessage.nanos = reader.int32();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tif (message.seconds !== 0n) writer.tag(1, WireType.Varint).int64(message.seconds);\n\t\tif (message.nanos !== 0) writer.tag(2, WireType.Varint).int32(message.nanos);\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message google.protobuf.Timestamp\n*/\nconst Timestamp = new Timestamp$Type();\n\n//#endregion\nexport { Timestamp };\n//# sourceMappingURL=timestamp-CN7C70ih.js.map","import { MessageType, UnknownFieldHandler, WireType, reflectionMergePartial } from \"@protobuf-ts/runtime\";\n\n//#region generated/ts/core/json_schema.ts\n/**\n* JSON schema type enumeration\n* Language-agnostic type classification for JSON values\n*\n* @generated from protobuf enum tusk.drift.core.v1.JsonSchemaType\n*/\nlet JsonSchemaType = /* @__PURE__ */ function(JsonSchemaType$1) {\n\t/**\n\t* @generated from protobuf enum value: JSON_SCHEMA_TYPE_UNSPECIFIED = 0;\n\t*/\n\tJsonSchemaType$1[JsonSchemaType$1[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n\t/**\n\t* @generated from protobuf enum value: JSON_SCHEMA_TYPE_NUMBER = 1;\n\t*/\n\tJsonSchemaType$1[JsonSchemaType$1[\"NUMBER\"] = 1] = \"NUMBER\";\n\t/**\n\t* @generated from protobuf enum value: JSON_SCHEMA_TYPE_STRING = 2;\n\t*/\n\tJsonSchemaType$1[JsonSchemaType$1[\"STRING\"] = 2] = \"STRING\";\n\t/**\n\t* @generated from protobuf enum value: JSON_SCHEMA_TYPE_BOOLEAN = 3;\n\t*/\n\tJsonSchemaType$1[JsonSchemaType$1[\"BOOLEAN\"] = 3] = \"BOOLEAN\";\n\t/**\n\t* @generated from protobuf enum value: JSON_SCHEMA_TYPE_NULL = 4;\n\t*/\n\tJsonSchemaType$1[JsonSchemaType$1[\"NULL\"] = 4] = \"NULL\";\n\t/**\n\t* @generated from protobuf enum value: JSON_SCHEMA_TYPE_UNDEFINED = 5;\n\t*/\n\tJsonSchemaType$1[JsonSchemaType$1[\"UNDEFINED\"] = 5] = \"UNDEFINED\";\n\t/**\n\t* @generated from protobuf enum value: JSON_SCHEMA_TYPE_OBJECT = 6;\n\t*/\n\tJsonSchemaType$1[JsonSchemaType$1[\"OBJECT\"] = 6] = \"OBJECT\";\n\t/**\n\t* @generated from protobuf enum value: JSON_SCHEMA_TYPE_ORDERED_LIST = 7;\n\t*/\n\tJsonSchemaType$1[JsonSchemaType$1[\"ORDERED_LIST\"] = 7] = \"ORDERED_LIST\";\n\t/**\n\t* @generated from protobuf enum value: JSON_SCHEMA_TYPE_UNORDERED_LIST = 8;\n\t*/\n\tJsonSchemaType$1[JsonSchemaType$1[\"UNORDERED_LIST\"] = 8] = \"UNORDERED_LIST\";\n\t/**\n\t* @generated from protobuf enum value: JSON_SCHEMA_TYPE_FUNCTION = 9;\n\t*/\n\tJsonSchemaType$1[JsonSchemaType$1[\"FUNCTION\"] = 9] = \"FUNCTION\";\n\treturn JsonSchemaType$1;\n}({});\n/**\n* Encoding type for data serialization\n*\n* @generated from protobuf enum tusk.drift.core.v1.EncodingType\n*/\nlet EncodingType = /* @__PURE__ */ function(EncodingType$1) {\n\t/**\n\t* @generated from protobuf enum value: ENCODING_TYPE_UNSPECIFIED = 0;\n\t*/\n\tEncodingType$1[EncodingType$1[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n\t/**\n\t* @generated from protobuf enum value: ENCODING_TYPE_BASE64 = 1;\n\t*/\n\tEncodingType$1[EncodingType$1[\"BASE64\"] = 1] = \"BASE64\";\n\treturn EncodingType$1;\n}({});\n/**\n* Decoded content type classification\n* Describes the semantic type of decoded content\n*\n* @generated from protobuf enum tusk.drift.core.v1.DecodedType\n*/\nlet DecodedType = /* @__PURE__ */ function(DecodedType$1) {\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_UNSPECIFIED = 0;\n\t*/\n\tDecodedType$1[DecodedType$1[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_JSON = 1;\n\t*/\n\tDecodedType$1[DecodedType$1[\"JSON\"] = 1] = \"JSON\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_HTML = 2;\n\t*/\n\tDecodedType$1[DecodedType$1[\"HTML\"] = 2] = \"HTML\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_CSS = 3;\n\t*/\n\tDecodedType$1[DecodedType$1[\"CSS\"] = 3] = \"CSS\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_JAVASCRIPT = 4;\n\t*/\n\tDecodedType$1[DecodedType$1[\"JAVASCRIPT\"] = 4] = \"JAVASCRIPT\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_XML = 5;\n\t*/\n\tDecodedType$1[DecodedType$1[\"XML\"] = 5] = \"XML\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_YAML = 6;\n\t*/\n\tDecodedType$1[DecodedType$1[\"YAML\"] = 6] = \"YAML\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_MARKDOWN = 7;\n\t*/\n\tDecodedType$1[DecodedType$1[\"MARKDOWN\"] = 7] = \"MARKDOWN\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_CSV = 8;\n\t*/\n\tDecodedType$1[DecodedType$1[\"CSV\"] = 8] = \"CSV\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_SQL = 9;\n\t*/\n\tDecodedType$1[DecodedType$1[\"SQL\"] = 9] = \"SQL\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_GRAPHQL = 10;\n\t*/\n\tDecodedType$1[DecodedType$1[\"GRAPHQL\"] = 10] = \"GRAPHQL\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_PLAIN_TEXT = 11;\n\t*/\n\tDecodedType$1[DecodedType$1[\"PLAIN_TEXT\"] = 11] = \"PLAIN_TEXT\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_FORM_DATA = 12;\n\t*/\n\tDecodedType$1[DecodedType$1[\"FORM_DATA\"] = 12] = \"FORM_DATA\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_MULTIPART_FORM = 13;\n\t*/\n\tDecodedType$1[DecodedType$1[\"MULTIPART_FORM\"] = 13] = \"MULTIPART_FORM\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_PDF = 14;\n\t*/\n\tDecodedType$1[DecodedType$1[\"PDF\"] = 14] = \"PDF\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_AUDIO = 15;\n\t*/\n\tDecodedType$1[DecodedType$1[\"AUDIO\"] = 15] = \"AUDIO\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_VIDEO = 16;\n\t*/\n\tDecodedType$1[DecodedType$1[\"VIDEO\"] = 16] = \"VIDEO\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_GZIP = 17;\n\t*/\n\tDecodedType$1[DecodedType$1[\"GZIP\"] = 17] = \"GZIP\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_BINARY = 18;\n\t*/\n\tDecodedType$1[DecodedType$1[\"BINARY\"] = 18] = \"BINARY\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_JPEG = 19;\n\t*/\n\tDecodedType$1[DecodedType$1[\"JPEG\"] = 19] = \"JPEG\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_PNG = 20;\n\t*/\n\tDecodedType$1[DecodedType$1[\"PNG\"] = 20] = \"PNG\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_GIF = 21;\n\t*/\n\tDecodedType$1[DecodedType$1[\"GIF\"] = 21] = \"GIF\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_WEBP = 22;\n\t*/\n\tDecodedType$1[DecodedType$1[\"WEBP\"] = 22] = \"WEBP\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_SVG = 23;\n\t*/\n\tDecodedType$1[DecodedType$1[\"SVG\"] = 23] = \"SVG\";\n\t/**\n\t* @generated from protobuf enum value: DECODED_TYPE_ZIP = 24;\n\t*/\n\tDecodedType$1[DecodedType$1[\"ZIP\"] = 24] = \"ZIP\";\n\treturn DecodedType$1;\n}({});\nvar JsonSchema$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"tusk.drift.core.v1.JsonSchema\", [\n\t\t\t{\n\t\t\t\tno: 1,\n\t\t\t\tname: \"type\",\n\t\t\t\tkind: \"enum\",\n\t\t\t\tT: () => [\n\t\t\t\t\t\"tusk.drift.core.v1.JsonSchemaType\",\n\t\t\t\t\tJsonSchemaType,\n\t\t\t\t\t\"JSON_SCHEMA_TYPE_\"\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 2,\n\t\t\t\tname: \"properties\",\n\t\t\t\tkind: \"map\",\n\t\t\t\tK: 9,\n\t\t\t\tV: {\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tT: () => JsonSchema\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 3,\n\t\t\t\tname: \"items\",\n\t\t\t\tkind: \"message\",\n\t\t\t\tT: () => JsonSchema\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 4,\n\t\t\t\tname: \"encoding\",\n\t\t\t\tkind: \"enum\",\n\t\t\t\topt: true,\n\t\t\t\tT: () => [\n\t\t\t\t\t\"tusk.drift.core.v1.EncodingType\",\n\t\t\t\t\tEncodingType,\n\t\t\t\t\t\"ENCODING_TYPE_\"\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 5,\n\t\t\t\tname: \"decoded_type\",\n\t\t\t\tkind: \"enum\",\n\t\t\t\topt: true,\n\t\t\t\tT: () => [\n\t\t\t\t\t\"tusk.drift.core.v1.DecodedType\",\n\t\t\t\t\tDecodedType,\n\t\t\t\t\t\"DECODED_TYPE_\"\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 6,\n\t\t\t\tname: \"match_importance\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\topt: true,\n\t\t\t\tT: 1\n\t\t\t}\n\t\t]);\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.type = 0;\n\t\tmessage.properties = {};\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.type = reader.int32();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tthis.binaryReadMap2(message.properties, reader, options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tmessage.items = JsonSchema.internalBinaryRead(reader, reader.uint32(), options, message.items);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tmessage.encoding = reader.int32();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 5:\n\t\t\t\t\tmessage.decodedType = reader.int32();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 6:\n\t\t\t\t\tmessage.matchImportance = reader.double();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tbinaryReadMap2(map, reader, options) {\n\t\tlet len = reader.uint32(), end = reader.pos + len, key, val;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tkey = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tval = JsonSchema.internalBinaryRead(reader, reader.uint32(), options);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: throw new globalThis.Error(\"unknown map entry field for tusk.drift.core.v1.JsonSchema.properties\");\n\t\t\t}\n\t\t}\n\t\tmap[key ?? \"\"] = val ?? JsonSchema.create();\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tif (message.type !== 0) writer.tag(1, WireType.Varint).int32(message.type);\n\t\tfor (let k of globalThis.Object.keys(message.properties)) {\n\t\t\twriter.tag(2, WireType.LengthDelimited).fork().tag(1, WireType.LengthDelimited).string(k);\n\t\t\twriter.tag(2, WireType.LengthDelimited).fork();\n\t\t\tJsonSchema.internalBinaryWrite(message.properties[k], writer, options);\n\t\t\twriter.join().join();\n\t\t}\n\t\tif (message.items) JsonSchema.internalBinaryWrite(message.items, writer.tag(3, WireType.LengthDelimited).fork(), options).join();\n\t\tif (message.encoding !== void 0) writer.tag(4, WireType.Varint).int32(message.encoding);\n\t\tif (message.decodedType !== void 0) writer.tag(5, WireType.Varint).int32(message.decodedType);\n\t\tif (message.matchImportance !== void 0) writer.tag(6, WireType.Bit64).double(message.matchImportance);\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message tusk.drift.core.v1.JsonSchema\n*/\nconst JsonSchema = new JsonSchema$Type();\n\n//#endregion\nexport { DecodedType, EncodingType, JsonSchema, JsonSchemaType };\n//# sourceMappingURL=json_schema-DhnvfM2m.js.map","import { Struct, Value } from \"./struct-LJz5_MGH.js\";\nimport { Duration } from \"./duration-B3fwb4jB.js\";\nimport { Timestamp } from \"./timestamp-CN7C70ih.js\";\nimport { JsonSchema } from \"./json_schema-DhnvfM2m.js\";\nimport { MessageType, UnknownFieldHandler, WireType, reflectionMergePartial } from \"@protobuf-ts/runtime\";\n\n//#region generated/ts/core/span.ts\n/**\n* Package type classification enum\n* Langauge agnostic\n*\n* @generated from protobuf enum tusk.drift.core.v1.PackageType\n*/\nlet PackageType = /* @__PURE__ */ function(PackageType$1) {\n\t/**\n\t* @generated from protobuf enum value: PACKAGE_TYPE_UNSPECIFIED = 0;\n\t*/\n\tPackageType$1[PackageType$1[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n\t/**\n\t* HTTP-based operations\n\t*\n\t* @generated from protobuf enum value: PACKAGE_TYPE_HTTP = 1;\n\t*/\n\tPackageType$1[PackageType$1[\"HTTP\"] = 1] = \"HTTP\";\n\t/**\n\t* GraphQL operations\n\t*\n\t* @generated from protobuf enum value: PACKAGE_TYPE_GRAPHQL = 2;\n\t*/\n\tPackageType$1[PackageType$1[\"GRAPHQL\"] = 2] = \"GRAPHQL\";\n\t/**\n\t* gRPC operations\n\t*\n\t* @generated from protobuf enum value: PACKAGE_TYPE_GRPC = 3;\n\t*/\n\tPackageType$1[PackageType$1[\"GRPC\"] = 3] = \"GRPC\";\n\t/**\n\t* PostgreSQL operations\n\t*\n\t* @generated from protobuf enum value: PACKAGE_TYPE_PG = 4;\n\t*/\n\tPackageType$1[PackageType$1[\"PG\"] = 4] = \"PG\";\n\t/**\n\t* MySQL operations\n\t*\n\t* @generated from protobuf enum value: PACKAGE_TYPE_MYSQL = 5;\n\t*/\n\tPackageType$1[PackageType$1[\"MYSQL\"] = 5] = \"MYSQL\";\n\t/**\n\t* MongoDB operations\n\t*\n\t* @generated from protobuf enum value: PACKAGE_TYPE_MONGODB = 6;\n\t*/\n\tPackageType$1[PackageType$1[\"MONGODB\"] = 6] = \"MONGODB\";\n\t/**\n\t* Redis caching operations\n\t*\n\t* @generated from protobuf enum value: PACKAGE_TYPE_REDIS = 7;\n\t*/\n\tPackageType$1[PackageType$1[\"REDIS\"] = 7] = \"REDIS\";\n\t/**\n\t* Apache Kafka messaging\n\t*\n\t* @generated from protobuf enum value: PACKAGE_TYPE_KAFKA = 8;\n\t*/\n\tPackageType$1[PackageType$1[\"KAFKA\"] = 8] = \"KAFKA\";\n\t/**\n\t* RabbitMQ messaging\n\t*\n\t* @generated from protobuf enum value: PACKAGE_TYPE_RABBITMQ = 9;\n\t*/\n\tPackageType$1[PackageType$1[\"RABBITMQ\"] = 9] = \"RABBITMQ\";\n\t/**\n\t* Firestore operations\n\t*\n\t* @generated from protobuf enum value: PACKAGE_TYPE_FIRESTORE = 10;\n\t*/\n\tPackageType$1[PackageType$1[\"FIRESTORE\"] = 10] = \"FIRESTORE\";\n\t/**\n\t* Prisma operations\n\t*\n\t* @generated from protobuf enum value: PACKAGE_TYPE_PRISMA = 11;\n\t*/\n\tPackageType$1[PackageType$1[\"PRISMA\"] = 11] = \"PRISMA\";\n\treturn PackageType$1;\n}({});\n/**\n* OpenTelemetry-compatible span kinds\n*\n* @generated from protobuf enum tusk.drift.core.v1.SpanKind\n*/\nlet SpanKind = /* @__PURE__ */ function(SpanKind$1) {\n\t/**\n\t* @generated from protobuf enum value: SPAN_KIND_UNSPECIFIED = 0;\n\t*/\n\tSpanKind$1[SpanKind$1[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n\t/**\n\t* Internal operation\n\t*\n\t* @generated from protobuf enum value: SPAN_KIND_INTERNAL = 1;\n\t*/\n\tSpanKind$1[SpanKind$1[\"INTERNAL\"] = 1] = \"INTERNAL\";\n\t/**\n\t* Server-side operation\n\t*\n\t* @generated from protobuf enum value: SPAN_KIND_SERVER = 2;\n\t*/\n\tSpanKind$1[SpanKind$1[\"SERVER\"] = 2] = \"SERVER\";\n\t/**\n\t* Client-side operation\n\t*\n\t* @generated from protobuf enum value: SPAN_KIND_CLIENT = 3;\n\t*/\n\tSpanKind$1[SpanKind$1[\"CLIENT\"] = 3] = \"CLIENT\";\n\t/**\n\t* Message producer\n\t*\n\t* @generated from protobuf enum value: SPAN_KIND_PRODUCER = 4;\n\t*/\n\tSpanKind$1[SpanKind$1[\"PRODUCER\"] = 4] = \"PRODUCER\";\n\t/**\n\t* Message consumer\n\t*\n\t* @generated from protobuf enum value: SPAN_KIND_CONSUMER = 5;\n\t*/\n\tSpanKind$1[SpanKind$1[\"CONSUMER\"] = 5] = \"CONSUMER\";\n\treturn SpanKind$1;\n}({});\n/**\n* @generated from protobuf enum tusk.drift.core.v1.StatusCode\n*/\nlet StatusCode = /* @__PURE__ */ function(StatusCode$1) {\n\t/**\n\t* Default state\n\t*\n\t* @generated from protobuf enum value: STATUS_CODE_UNSPECIFIED = 0;\n\t*/\n\tStatusCode$1[StatusCode$1[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n\t/**\n\t* Success\n\t*\n\t* @generated from protobuf enum value: STATUS_CODE_OK = 1;\n\t*/\n\tStatusCode$1[StatusCode$1[\"OK\"] = 1] = \"OK\";\n\t/**\n\t* Error occurred\n\t*\n\t* @generated from protobuf enum value: STATUS_CODE_ERROR = 2;\n\t*/\n\tStatusCode$1[StatusCode$1[\"ERROR\"] = 2] = \"ERROR\";\n\treturn StatusCode$1;\n}({});\nvar Span$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"tusk.drift.core.v1.Span\", [\n\t\t\t{\n\t\t\t\tno: 1,\n\t\t\t\tname: \"trace_id\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 2,\n\t\t\t\tname: \"span_id\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 3,\n\t\t\t\tname: \"parent_span_id\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 4,\n\t\t\t\tname: \"name\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 5,\n\t\t\t\tname: \"package_name\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 6,\n\t\t\t\tname: \"instrumentation_name\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 7,\n\t\t\t\tname: \"submodule_name\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 8,\n\t\t\t\tname: \"package_type\",\n\t\t\t\tkind: \"enum\",\n\t\t\t\tT: () => [\n\t\t\t\t\t\"tusk.drift.core.v1.PackageType\",\n\t\t\t\t\tPackageType,\n\t\t\t\t\t\"PACKAGE_TYPE_\"\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 9,\n\t\t\t\tname: \"input_value\",\n\t\t\t\tkind: \"message\",\n\t\t\t\tT: () => Struct\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 10,\n\t\t\t\tname: \"output_value\",\n\t\t\t\tkind: \"message\",\n\t\t\t\tT: () => Struct\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 11,\n\t\t\t\tname: \"input_schema\",\n\t\t\t\tkind: \"message\",\n\t\t\t\tT: () => JsonSchema\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 12,\n\t\t\t\tname: \"output_schema\",\n\t\t\t\tkind: \"message\",\n\t\t\t\tT: () => JsonSchema\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 13,\n\t\t\t\tname: \"input_schema_hash\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 14,\n\t\t\t\tname: \"output_schema_hash\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 15,\n\t\t\t\tname: \"input_value_hash\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 16,\n\t\t\t\tname: \"output_value_hash\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 17,\n\t\t\t\tname: \"kind\",\n\t\t\t\tkind: \"enum\",\n\t\t\t\tT: () => [\n\t\t\t\t\t\"tusk.drift.core.v1.SpanKind\",\n\t\t\t\t\tSpanKind,\n\t\t\t\t\t\"SPAN_KIND_\"\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 18,\n\t\t\t\tname: \"status\",\n\t\t\t\tkind: \"message\",\n\t\t\t\tT: () => SpanStatus\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 19,\n\t\t\t\tname: \"is_pre_app_start\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 8\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 20,\n\t\t\t\tname: \"timestamp\",\n\t\t\t\tkind: \"message\",\n\t\t\t\tT: () => Timestamp\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 21,\n\t\t\t\tname: \"duration\",\n\t\t\t\tkind: \"message\",\n\t\t\t\tT: () => Duration\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 22,\n\t\t\t\tname: \"is_root_span\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 8\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 23,\n\t\t\t\tname: \"metadata\",\n\t\t\t\tkind: \"message\",\n\t\t\t\tT: () => Struct\n\t\t\t}\n\t\t]);\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.traceId = \"\";\n\t\tmessage.spanId = \"\";\n\t\tmessage.parentSpanId = \"\";\n\t\tmessage.name = \"\";\n\t\tmessage.packageName = \"\";\n\t\tmessage.instrumentationName = \"\";\n\t\tmessage.submoduleName = \"\";\n\t\tmessage.packageType = 0;\n\t\tmessage.inputSchemaHash = \"\";\n\t\tmessage.outputSchemaHash = \"\";\n\t\tmessage.inputValueHash = \"\";\n\t\tmessage.outputValueHash = \"\";\n\t\tmessage.kind = 0;\n\t\tmessage.isPreAppStart = false;\n\t\tmessage.isRootSpan = false;\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.traceId = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tmessage.spanId = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tmessage.parentSpanId = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tmessage.name = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 5:\n\t\t\t\t\tmessage.packageName = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 6:\n\t\t\t\t\tmessage.instrumentationName = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 7:\n\t\t\t\t\tmessage.submoduleName = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 8:\n\t\t\t\t\tmessage.packageType = reader.int32();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 9:\n\t\t\t\t\tmessage.inputValue = Struct.internalBinaryRead(reader, reader.uint32(), options, message.inputValue);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 10:\n\t\t\t\t\tmessage.outputValue = Struct.internalBinaryRead(reader, reader.uint32(), options, message.outputValue);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 11:\n\t\t\t\t\tmessage.inputSchema = JsonSchema.internalBinaryRead(reader, reader.uint32(), options, message.inputSchema);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 12:\n\t\t\t\t\tmessage.outputSchema = JsonSchema.internalBinaryRead(reader, reader.uint32(), options, message.outputSchema);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 13:\n\t\t\t\t\tmessage.inputSchemaHash = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 14:\n\t\t\t\t\tmessage.outputSchemaHash = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 15:\n\t\t\t\t\tmessage.inputValueHash = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 16:\n\t\t\t\t\tmessage.outputValueHash = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 17:\n\t\t\t\t\tmessage.kind = reader.int32();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 18:\n\t\t\t\t\tmessage.status = SpanStatus.internalBinaryRead(reader, reader.uint32(), options, message.status);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 19:\n\t\t\t\t\tmessage.isPreAppStart = reader.bool();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 20:\n\t\t\t\t\tmessage.timestamp = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.timestamp);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 21:\n\t\t\t\t\tmessage.duration = Duration.internalBinaryRead(reader, reader.uint32(), options, message.duration);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 22:\n\t\t\t\t\tmessage.isRootSpan = reader.bool();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 23:\n\t\t\t\t\tmessage.metadata = Struct.internalBinaryRead(reader, reader.uint32(), options, message.metadata);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tif (message.traceId !== \"\") writer.tag(1, WireType.LengthDelimited).string(message.traceId);\n\t\tif (message.spanId !== \"\") writer.tag(2, WireType.LengthDelimited).string(message.spanId);\n\t\tif (message.parentSpanId !== \"\") writer.tag(3, WireType.LengthDelimited).string(message.parentSpanId);\n\t\tif (message.name !== \"\") writer.tag(4, WireType.LengthDelimited).string(message.name);\n\t\tif (message.packageName !== \"\") writer.tag(5, WireType.LengthDelimited).string(message.packageName);\n\t\tif (message.instrumentationName !== \"\") writer.tag(6, WireType.LengthDelimited).string(message.instrumentationName);\n\t\tif (message.submoduleName !== \"\") writer.tag(7, WireType.LengthDelimited).string(message.submoduleName);\n\t\tif (message.packageType !== 0) writer.tag(8, WireType.Varint).int32(message.packageType);\n\t\tif (message.inputValue) Struct.internalBinaryWrite(message.inputValue, writer.tag(9, WireType.LengthDelimited).fork(), options).join();\n\t\tif (message.outputValue) Struct.internalBinaryWrite(message.outputValue, writer.tag(10, WireType.LengthDelimited).fork(), options).join();\n\t\tif (message.inputSchema) JsonSchema.internalBinaryWrite(message.inputSchema, writer.tag(11, WireType.LengthDelimited).fork(), options).join();\n\t\tif (message.outputSchema) JsonSchema.internalBinaryWrite(message.outputSchema, writer.tag(12, WireType.LengthDelimited).fork(), options).join();\n\t\tif (message.inputSchemaHash !== \"\") writer.tag(13, WireType.LengthDelimited).string(message.inputSchemaHash);\n\t\tif (message.outputSchemaHash !== \"\") writer.tag(14, WireType.LengthDelimited).string(message.outputSchemaHash);\n\t\tif (message.inputValueHash !== \"\") writer.tag(15, WireType.LengthDelimited).string(message.inputValueHash);\n\t\tif (message.outputValueHash !== \"\") writer.tag(16, WireType.LengthDelimited).string(message.outputValueHash);\n\t\tif (message.kind !== 0) writer.tag(17, WireType.Varint).int32(message.kind);\n\t\tif (message.status) SpanStatus.internalBinaryWrite(message.status, writer.tag(18, WireType.LengthDelimited).fork(), options).join();\n\t\tif (message.isPreAppStart !== false) writer.tag(19, WireType.Varint).bool(message.isPreAppStart);\n\t\tif (message.timestamp) Timestamp.internalBinaryWrite(message.timestamp, writer.tag(20, WireType.LengthDelimited).fork(), options).join();\n\t\tif (message.duration) Duration.internalBinaryWrite(message.duration, writer.tag(21, WireType.LengthDelimited).fork(), options).join();\n\t\tif (message.isRootSpan !== false) writer.tag(22, WireType.Varint).bool(message.isRootSpan);\n\t\tif (message.metadata) Struct.internalBinaryWrite(message.metadata, writer.tag(23, WireType.LengthDelimited).fork(), options).join();\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message tusk.drift.core.v1.Span\n*/\nconst Span = new Span$Type();\nvar SpanStatus$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"tusk.drift.core.v1.SpanStatus\", [{\n\t\t\tno: 1,\n\t\t\tname: \"code\",\n\t\t\tkind: \"enum\",\n\t\t\tT: () => [\n\t\t\t\t\"tusk.drift.core.v1.StatusCode\",\n\t\t\t\tStatusCode,\n\t\t\t\t\"STATUS_CODE_\"\n\t\t\t]\n\t\t}, {\n\t\t\tno: 2,\n\t\t\tname: \"message\",\n\t\t\tkind: \"scalar\",\n\t\t\tT: 9\n\t\t}]);\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.code = 0;\n\t\tmessage.message = \"\";\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.code = reader.int32();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tmessage.message = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tif (message.code !== 0) writer.tag(1, WireType.Varint).int32(message.code);\n\t\tif (message.message !== \"\") writer.tag(2, WireType.LengthDelimited).string(message.message);\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message tusk.drift.core.v1.SpanStatus\n*/\nconst SpanStatus = new SpanStatus$Type();\nvar SpanEvent$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"tusk.drift.core.v1.SpanEvent\", [\n\t\t\t{\n\t\t\t\tno: 1,\n\t\t\t\tname: \"name\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 2,\n\t\t\t\tname: \"timestamp\",\n\t\t\t\tkind: \"message\",\n\t\t\t\tT: () => Timestamp\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 3,\n\t\t\t\tname: \"attributes\",\n\t\t\t\tkind: \"map\",\n\t\t\t\tK: 9,\n\t\t\t\tV: {\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tT: () => Value\n\t\t\t\t}\n\t\t\t}\n\t\t]);\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.name = \"\";\n\t\tmessage.attributes = {};\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.name = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tmessage.timestamp = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.timestamp);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tthis.binaryReadMap3(message.attributes, reader, options);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tbinaryReadMap3(map, reader, options) {\n\t\tlet len = reader.uint32(), end = reader.pos + len, key, val;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tkey = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tval = Value.internalBinaryRead(reader, reader.uint32(), options);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: throw new globalThis.Error(\"unknown map entry field for tusk.drift.core.v1.SpanEvent.attributes\");\n\t\t\t}\n\t\t}\n\t\tmap[key ?? \"\"] = val ?? Value.create();\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tif (message.name !== \"\") writer.tag(1, WireType.LengthDelimited).string(message.name);\n\t\tif (message.timestamp) Timestamp.internalBinaryWrite(message.timestamp, writer.tag(2, WireType.LengthDelimited).fork(), options).join();\n\t\tfor (let k of globalThis.Object.keys(message.attributes)) {\n\t\t\twriter.tag(3, WireType.LengthDelimited).fork().tag(1, WireType.LengthDelimited).string(k);\n\t\t\twriter.tag(2, WireType.LengthDelimited).fork();\n\t\t\tValue.internalBinaryWrite(message.attributes[k], writer, options);\n\t\t\twriter.join().join();\n\t\t}\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message tusk.drift.core.v1.SpanEvent\n*/\nconst SpanEvent = new SpanEvent$Type();\nvar SpanLink$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"tusk.drift.core.v1.SpanLink\", [\n\t\t\t{\n\t\t\t\tno: 1,\n\t\t\t\tname: \"trace_id\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 2,\n\t\t\t\tname: \"span_id\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 3,\n\t\t\t\tname: \"attributes\",\n\t\t\t\tkind: \"map\",\n\t\t\t\tK: 9,\n\t\t\t\tV: {\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tT: () => Value\n\t\t\t\t}\n\t\t\t}\n\t\t]);\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.traceId = \"\";\n\t\tmessage.spanId = \"\";\n\t\tmessage.attributes = {};\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.traceId = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tmessage.spanId = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tthis.binaryReadMap3(message.attributes, reader, options);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tbinaryReadMap3(map, reader, options) {\n\t\tlet len = reader.uint32(), end = reader.pos + len, key, val;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tkey = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tval = Value.internalBinaryRead(reader, reader.uint32(), options);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: throw new globalThis.Error(\"unknown map entry field for tusk.drift.core.v1.SpanLink.attributes\");\n\t\t\t}\n\t\t}\n\t\tmap[key ?? \"\"] = val ?? Value.create();\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tif (message.traceId !== \"\") writer.tag(1, WireType.LengthDelimited).string(message.traceId);\n\t\tif (message.spanId !== \"\") writer.tag(2, WireType.LengthDelimited).string(message.spanId);\n\t\tfor (let k of globalThis.Object.keys(message.attributes)) {\n\t\t\twriter.tag(3, WireType.LengthDelimited).fork().tag(1, WireType.LengthDelimited).string(k);\n\t\t\twriter.tag(2, WireType.LengthDelimited).fork();\n\t\t\tValue.internalBinaryWrite(message.attributes[k], writer, options);\n\t\t\twriter.join().join();\n\t\t}\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message tusk.drift.core.v1.SpanLink\n*/\nconst SpanLink = new SpanLink$Type();\nvar Trace$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"tusk.drift.core.v1.Trace\", [\n\t\t\t{\n\t\t\t\tno: 1,\n\t\t\t\tname: \"trace_id\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 2,\n\t\t\t\tname: \"spans\",\n\t\t\t\tkind: \"message\",\n\t\t\t\trepeat: 2,\n\t\t\t\tT: () => Span\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 3,\n\t\t\t\tname: \"started_at\",\n\t\t\t\tkind: \"message\",\n\t\t\t\tT: () => Timestamp\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 4,\n\t\t\t\tname: \"completed_at\",\n\t\t\t\tkind: \"message\",\n\t\t\t\tT: () => Timestamp\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 5,\n\t\t\t\tname: \"metadata\",\n\t\t\t\tkind: \"map\",\n\t\t\t\tK: 9,\n\t\t\t\tV: {\n\t\t\t\t\tkind: \"scalar\",\n\t\t\t\t\tT: 9\n\t\t\t\t}\n\t\t\t}\n\t\t]);\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.traceId = \"\";\n\t\tmessage.spans = [];\n\t\tmessage.metadata = {};\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.traceId = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tmessage.spans.push(Span.internalBinaryRead(reader, reader.uint32(), options));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tmessage.startedAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.startedAt);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tmessage.completedAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.completedAt);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 5:\n\t\t\t\t\tthis.binaryReadMap5(message.metadata, reader, options);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tbinaryReadMap5(map, reader, options) {\n\t\tlet len = reader.uint32(), end = reader.pos + len, key, val;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tkey = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tval = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: throw new globalThis.Error(\"unknown map entry field for tusk.drift.core.v1.Trace.metadata\");\n\t\t\t}\n\t\t}\n\t\tmap[key ?? \"\"] = val ?? \"\";\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tif (message.traceId !== \"\") writer.tag(1, WireType.LengthDelimited).string(message.traceId);\n\t\tfor (let i = 0; i < message.spans.length; i++) Span.internalBinaryWrite(message.spans[i], writer.tag(2, WireType.LengthDelimited).fork(), options).join();\n\t\tif (message.startedAt) Timestamp.internalBinaryWrite(message.startedAt, writer.tag(3, WireType.LengthDelimited).fork(), options).join();\n\t\tif (message.completedAt) Timestamp.internalBinaryWrite(message.completedAt, writer.tag(4, WireType.LengthDelimited).fork(), options).join();\n\t\tfor (let k of globalThis.Object.keys(message.metadata)) writer.tag(5, WireType.LengthDelimited).fork().tag(1, WireType.LengthDelimited).string(k).tag(2, WireType.LengthDelimited).string(message.metadata[k]).join();\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message tusk.drift.core.v1.Trace\n*/\nconst Trace = new Trace$Type();\n\n//#endregion\nexport { PackageType, Span, SpanEvent, SpanKind, SpanLink, SpanStatus, StatusCode, Trace };\n//# sourceMappingURL=span-BZ89ct3l.js.map","import { Value, Struct } from \"@use-tusk/drift-schemas/google/protobuf/struct\";\nimport { SpanKind as OtSpanKind } from \"@opentelemetry/api\";\nimport { SpanKind as PbSpanKind } from \"@use-tusk/drift-schemas/core/span\";\nimport {\n  type JsonSchema,\n  JsonSchemaType,\n  EncodingType,\n  DecodedType,\n} from \"@use-tusk/drift-schemas/core/json_schema\";\n\nexport const toStruct = (obj: unknown | undefined) =>\n  obj ? objectToProtobufStruct(obj) : undefined;\n\n// Map OpenTelemetry SpanKind -> protobuf SpanKind\nexport const mapOtToPb = (k: OtSpanKind): PbSpanKind => {\n  switch (k) {\n    case OtSpanKind.INTERNAL:\n      return PbSpanKind.INTERNAL;\n    case OtSpanKind.SERVER:\n      return PbSpanKind.SERVER;\n    case OtSpanKind.CLIENT:\n      return PbSpanKind.CLIENT;\n    case OtSpanKind.PRODUCER:\n      return PbSpanKind.PRODUCER;\n    case OtSpanKind.CONSUMER:\n      return PbSpanKind.CONSUMER;\n    default:\n      return PbSpanKind.UNSPECIFIED;\n  }\n};\n\n/**\n * Converts a JavaScript object to protobuf Struct format\n */\nexport function objectToProtobufStruct(obj: unknown): Struct {\n  const fields: Record<string, Value> = {};\n\n  for (const [key, value] of Object.entries(obj as Record<string, unknown>)) {\n    fields[key] = valueToProtobufValue(value);\n  }\n\n  return Struct.create({ fields });\n}\n\n/**\n * Converts a JavaScript value to protobuf Value format\n */\nexport function valueToProtobufValue(value: unknown): Value {\n  if (value === null || value === undefined) {\n    return Value.create({ kind: { oneofKind: \"nullValue\", nullValue: 0 } });\n  }\n\n  if (typeof value === \"boolean\") {\n    return Value.create({ kind: { oneofKind: \"boolValue\", boolValue: value } });\n  }\n\n  if (typeof value === \"number\") {\n    return Value.create({ kind: { oneofKind: \"numberValue\", numberValue: value } });\n  }\n\n  if (typeof value === \"string\") {\n    return Value.create({ kind: { oneofKind: \"stringValue\", stringValue: value } });\n  }\n\n  if (Array.isArray(value)) {\n    const listValue = {\n      values: value.map((item) => valueToProtobufValue(item)),\n    };\n    return Value.create({ kind: { oneofKind: \"listValue\", listValue } });\n  }\n\n  if (typeof value === \"object\" && value !== null) {\n    const structValue = objectToProtobufStruct(value);\n    return Value.create({ kind: { oneofKind: \"structValue\", structValue } });\n  }\n\n  // Fallback to string representation for other types\n  return Value.create({ kind: { oneofKind: \"stringValue\", stringValue: String(value) } });\n}\n","/**\n * Utility to access original global functions before they are instrumented.\n * This should be imported early in the application lifecycle to capture\n * the original references before any instrumentation occurs.\n *\n * NOTE: this only works for global functions, not for module imports.\n */\n\nconst OriginalDate = globalThis.Date;\nconst OriginalProcessEnv = process.env;\n\nexport class OriginalGlobalUtils {\n  /**\n   * Get the original Date constructor, unaffected by instrumentation\n   */\n  static getOriginalDate(): Date {\n    return new OriginalDate();\n  }\n\n  /**\n   * Get a specific environment variable using the original process.env\n   */\n  static getOriginalProcessEnvVar(key: string): string | undefined {\n    return OriginalProcessEnv[key];\n  }\n}\n","import fs from \"fs\";\nimport path from \"path\";\nimport yaml from \"js-yaml\";\nimport { logger } from \"./logger\";\nimport { TransformConfigs } from \"src/instrumentation/libraries/types\";\n\nexport interface TuskConfig {\n  service?: {\n    id?: string;\n    name?: string;\n    port?: number;\n    start?: {\n      command?: string;\n    };\n    readiness_check?: {\n      command?: string;\n      timeout?: string;\n      interval?: string;\n    };\n  };\n  traces?: {\n    dir?: string;\n  };\n  tusk_api?: {\n    url?: string;\n  };\n  test_execution?: {\n    concurrency?: number;\n    timeout?: string;\n  };\n  comparison?: {\n    ignore_fields?: string[];\n  };\n  recording?: {\n    sampling_rate?: number;\n    export_spans?: boolean;\n    enable_env_var_recording?: boolean;\n    enable_analytics?: boolean;\n    exclude_paths?: string[];\n  };\n  transforms?: TransformConfigs;\n}\n\n/**\n * Find project root by traversing up from the current working directory\n * or from the SDK's installation location in node_modules\n */\nfunction findProjectRoot(): string | null {\n  let currentDir = process.cwd();\n\n  // If we're running from node_modules, traverse up to find the project root\n  if (currentDir.includes(\"node_modules\")) {\n    // Find the node_modules directory and go up one level\n    const nodeModulesIndex = currentDir.indexOf(\"node_modules\");\n    if (nodeModulesIndex !== -1) {\n      currentDir = currentDir.substring(0, nodeModulesIndex);\n    }\n  }\n\n  // Traverse up to find package.json (indicating project root)\n  while (currentDir !== path.dirname(currentDir)) {\n    const packageJsonPath = path.join(currentDir, \"package.json\");\n    if (fs.existsSync(packageJsonPath)) {\n      return currentDir;\n    }\n    currentDir = path.dirname(currentDir);\n  }\n\n  return null;\n}\n\n/**\n * Load the Tusk config from .tusk/config.yaml in the customer's project\n * Returns the raw config object without strict typing to allow future extensions\n */\nexport function loadTuskConfig(): TuskConfig | null {\n  try {\n    const projectRoot = findProjectRoot();\n    if (!projectRoot) {\n      logger.error(\"Could not find project root. Config loading skipped.\");\n      return null;\n    }\n\n    const configPath = path.join(projectRoot, \".tusk\", \"config.yaml\");\n\n    if (!fs.existsSync(configPath)) {\n      logger.error(`No config file found at ${configPath}`);\n      return null;\n    }\n\n    logger.debug(`Loading config from ${configPath}`);\n\n    const configContent = fs.readFileSync(configPath, \"utf8\");\n    const config = yaml.load(configContent) as TuskConfig;\n\n    logger.debug(`Successfully loaded config for service: ${config.service?.name || \"unknown\"}`);\n    return config;\n  } catch (error) {\n    logger.error(\"Error loading config:\", error);\n    return null;\n  }\n}\n","export function isNextJsRuntime(): boolean {\n  return (\n    process.env.NEXT_RUNTIME !== undefined || typeof (global as any).__NEXT_DATA__ !== \"undefined\"\n  );\n}\n\nexport function isEsm(moduleExports: any): boolean {\n  // Guard against null, undefined, and non-object values\n  if (!moduleExports || typeof moduleExports !== \"object\") {\n    return false;\n  }\n\n  try {\n    // Check if Symbol.toStringTag exists and equals \"Module\"\n    // This is the standard way ESM modules identify themselves\n    return moduleExports[Symbol.toStringTag] === \"Module\";\n  } catch (error) {\n    // If accessing the symbol throws an error (unlikely but possible with Proxies),\n    // safely return false\n    return false;\n  }\n}\n","import { OriginalGlobalUtils } from \"./\";\n\nexport type LogLevel = \"silent\" | \"error\" | \"warn\" | \"info\" | \"debug\";\n\ninterface LoggerConfig {\n  logLevel: LogLevel;\n  prefix?: string;\n}\n\nclass Logger {\n  private config: LoggerConfig;\n  private readonly levels = {\n    silent: 0,\n    error: 1,\n    warn: 2,\n    info: 3,\n    debug: 4,\n  };\n\n  constructor(config: LoggerConfig) {\n    this.config = config;\n  }\n\n  private shouldLog(level: LogLevel): boolean {\n    return this.levels[level] <= this.levels[this.config.logLevel];\n  }\n\n  private formatMessage(level: LogLevel, message: string): string {\n    const currentData = OriginalGlobalUtils.getOriginalDate();\n    const timestamp = currentData instanceof Date ? currentData.toISOString() : currentData;\n    // const timestamp = new Date().toISOString();\n    const prefix = this.config.prefix ? `[${this.config.prefix}] ` : \"[TuskDrift] \";\n    return `${timestamp} ${prefix}${message}`;\n  }\n\n  error(message: string, ...args: unknown[]): void {\n    if (this.shouldLog(\"error\")) {\n      console.error(this.formatMessage(\"error\", message), ...args);\n    }\n  }\n\n  warn(message: string, ...args: unknown[]): void {\n    if (this.shouldLog(\"warn\")) {\n      console.warn(this.formatMessage(\"warn\", message), ...args);\n    }\n  }\n\n  info(message: string, ...args: unknown[]): void {\n    if (this.shouldLog(\"info\")) {\n      console.log(this.formatMessage(\"info\", message), ...args);\n    }\n  }\n\n  debug(message: string, ...args: unknown[]): void {\n    if (this.shouldLog(\"debug\")) {\n      console.log(this.formatMessage(\"debug\", message), ...args);\n    }\n  }\n\n  setLogLevel(level: LogLevel): void {\n    this.config.logLevel = level;\n  }\n\n  getLogLevel(): LogLevel {\n    return this.config.logLevel;\n  }\n}\n\n// Global logger instance\nlet globalLogger: Logger;\n\nexport function createLogger(config: LoggerConfig): Logger {\n  return new Logger(config);\n}\n\nexport function initializeGlobalLogger(config: LoggerConfig): void {\n  globalLogger = createLogger(config);\n}\n\nexport function getLogger(): Logger {\n  if (!globalLogger) {\n    // Default to warn level if not initialized\n    globalLogger = createLogger({ logLevel: \"warn\" });\n  }\n  return globalLogger;\n}\n\n/**\n * - LogLevel = \"silent\"\n *   - No logs are emitted\n * - LogLevel = \"error\"\n *   - Logs errors\n * - LogLevel = \"warn\"\n *   - Logs warnings and errors\n * - LogLevel = \"info\"\n *   - Logs info, warnings, and errors\n * - LogLevel = \"debug\"\n *   - Logs debug, info, warnings, and errors\n */\nexport const logger = {\n  error: (message: string, ...args: unknown[]) => getLogger().error(message, ...args),\n  warn: (message: string, ...args: unknown[]) => getLogger().warn(message, ...args),\n  info: (message: string, ...args: unknown[]) => getLogger().info(message, ...args),\n  debug: (message: string, ...args: unknown[]) => getLogger().debug(message, ...args),\n  setLogLevel: (level: LogLevel) => getLogger().setLogLevel(level),\n  getLogLevel: () => getLogger().getLogLevel(),\n};\n","import { TuskDriftCore, TuskDriftMode } from \"../TuskDrift\";\nimport { SDK_VERSION } from \"../../version\";\nimport { logger } from \"../utils/logger\";\n\n/**\n * Send version mismatch alert to CLI (only in REPLAY mode)\n */\nexport function sendVersionMismatchAlert({\n  moduleName,\n  foundVersion,\n  supportedVersions,\n}: {\n  moduleName: string;\n  foundVersion: string | undefined;\n  supportedVersions: string[];\n}): void {\n  logger.info(\"Sending version mismatch alert\", {\n    moduleName,\n    foundVersion: foundVersion,\n    supportedVersions,\n  });\n  try {\n    // Only send in replay mode\n    const mode = TuskDriftCore.getInstance().getMode();\n    if (mode !== TuskDriftMode.REPLAY) {\n      return;\n    }\n\n    const protobufComm = TuskDriftCore.getInstance().getProtobufCommunicator();\n    if (protobufComm) {\n      protobufComm.sendInstrumentationVersionMismatchAlert({\n        moduleName,\n        requestedVersion: foundVersion,\n        supportedVersions,\n      });\n    }\n  } catch (e) {\n    logger.error(\"Error sending version mismatch alert:\", e);\n  }\n}\n\n/**\n * Send unpatched dependency alert to CLI\n */\nexport function sendUnpatchedDependencyAlert({\n  traceTestServerSpanId,\n  stackTrace,\n}: {\n  traceTestServerSpanId: string;\n  stackTrace?: string;\n}): void {\n  logger.info(\"Sending unpatched dependency alert\", {\n    traceTestServerSpanId,\n    stackTrace,\n  });\n  try {\n    const protobufComm = TuskDriftCore.getInstance().getProtobufCommunicator();\n    if (protobufComm && stackTrace) {\n      protobufComm.sendUnpatchedDependencyAlert({\n        stackTrace,\n        traceTestServerSpanId,\n      });\n    }\n  } catch (e) {\n    logger.error(\"Error sending unpatched dependency alert:\", e);\n  }\n}\n","import path from \"path\";\nimport { satisfies } from \"semver\";\nimport { TdInstrumentationAbstract, TdInstrumentationConfig } from \"./TdInstrumentationAbstract\";\nimport { TdInstrumentationNodeModule } from \"./TdInstrumentationNodeModule\";\nimport { Hook as HookRequire, HookOptions } from \"require-in-the-middle\";\nimport { Hook as HookImport } from \"import-in-the-middle\";\nimport type { HookFn } from \"import-in-the-middle\";\nimport { sendVersionMismatchAlert } from \"../../../core/analytics\";\nimport { logger } from \"../../../core/utils/logger\";\n\nexport abstract class TdInstrumentationBase extends TdInstrumentationAbstract {\n  protected _modules: TdInstrumentationNodeModule[] = [];\n  protected _hooks: (HookRequire | HookImport)[] = [];\n  protected _enabled = false;\n  // WeakSet to track patched modules (needed for ESM where we can't add properties to module exports)\n  private static _patchedModules = new WeakSet<object>();\n\n  constructor(instrumentationName: string, config: TdInstrumentationConfig = {}) {\n    super(instrumentationName, config);\n\n    let modules = this.init();\n    if (modules && !Array.isArray(modules)) {\n      modules = [modules];\n    }\n    this._modules = modules || [];\n\n    if (this._config.enabled) {\n      this.enable();\n    }\n  }\n\n  abstract init(): TdInstrumentationNodeModule | TdInstrumentationNodeModule[] | void;\n\n  /**\n   * Check if the provided version matches any of the supported versions\n   * @param supportedVersions - Array of version patterns (e.g. [\"^1.0.0\", \"2.x\"])\n   * @param version - The actual version to check (e.g. \"1.2.3\")\n   * @param includePrerelease - Whether to include prerelease versions\n   * @returns true if version is supported, false otherwise\n   */\n  isSupported(supportedVersions: string[], version?: string, includePrerelease = false): boolean {\n    if (typeof version === \"undefined\") {\n      return supportedVersions.includes(\"*\");\n    }\n    if (version === \"any\") {\n      return true;\n    }\n    return supportedVersions.some((supportedVersion) =>\n      satisfies(version, supportedVersion, {\n        includePrerelease,\n      }),\n    );\n  }\n\n  /**\n   * Extract package version from package.json in the given base directory\n   * @param baseDir - Base directory containing package.json\n   * @returns Version string or undefined if not found\n   */\n  private _extractPackageVersion(baseDir?: string): string | undefined {\n    if (!baseDir) {\n      return undefined;\n    }\n    try {\n      const packagePath = path.join(baseDir, \"package.json\");\n      const { version } = require(packagePath);\n      return typeof version === \"string\" ? version : undefined;\n    } catch (error) {\n      logger.warn(`Failed extracting version from ${baseDir}:`, error);\n    }\n    return undefined;\n  }\n\n  enable(): void {\n    if (this._enabled) {\n      return;\n    }\n    this._enabled = true;\n\n    // Set up hooks for each module (both CJS and ESM)\n    for (const module of this._modules) {\n      // CommonJS hook callback\n      const onRequire = (exports: any, name: string, baseDir?: string) => {\n        return this._onRequire(module, exports, name, baseDir);\n      };\n\n      // ESM hook callback\n      const hookFn: HookFn = (exports, name, baseDir) => {\n        // Handle absolute paths for ESM\n        if (!baseDir && path.isAbsolute(name)) {\n          const parsedPath = path.parse(name);\n          name = parsedPath.name;\n          baseDir = parsedPath.dir;\n        }\n        return this._onRequire(module, exports, name, baseDir || undefined);\n      };\n\n      const cjsHook = new HookRequire([module.name], { internals: true }, onRequire);\n      this._hooks.push(cjsHook);\n\n      // Register ESM hook (import-in-the-middle)\n      const esmHook = new HookImport([module.name], { internals: false }, hookFn);\n      this._hooks.push(esmHook);\n    }\n  }\n\n  isEnabled(): boolean {\n    return this._enabled;\n  }\n\n  /**\n   * Mark a module as patched.\n   */\n  protected markModuleAsPatched(moduleExports: any): void {\n    TdInstrumentationBase._patchedModules.add(moduleExports);\n  }\n\n  /**\n   * Check if a module has already been patched.\n   */\n  protected isModulePatched(moduleExports: any): boolean {\n    return TdInstrumentationBase._patchedModules.has(moduleExports);\n  }\n\n  private _onRequire(\n    module: TdInstrumentationNodeModule,\n    exports: any,\n    name: string,\n    baseDir?: string,\n  ): any {\n    // baseDir set by require-in-the-middle\n    if (!baseDir) {\n      if (typeof module.patch === \"function\") {\n        module.moduleExports = exports;\n        if (this._enabled) {\n          logger.debug(`Patching module ${name} (no version info available)`);\n          return module.patch(exports);\n        }\n      }\n      return exports;\n    }\n\n    const version = this._extractPackageVersion(baseDir);\n    module.moduleVersion = version;\n\n    if (module.name === name) {\n      if (\n        this.isSupported(module.supportedVersions, version) &&\n        typeof module.patch === \"function\"\n      ) {\n        module.moduleExports = exports;\n        if (this._enabled) {\n          logger.debug(\n            `Patching main module ${name} v${version} for instrumentation ${this.instrumentationName}`,\n          );\n          return module.patch(exports, module.moduleVersion);\n        }\n      } else if (version) {\n        // Check if ANY module for this package name supports this version before logging/alerting\n        const isVersionSupportedByAnyModule = this._modules\n          .filter((m) => m.name === name)\n          .some((m) => this.isSupported(m.supportedVersions, version));\n\n        if (!isVersionSupportedByAnyModule) {\n          logger.error(\n            `Version mismatch for module ${name}: found v${version}, supported versions: [${module.supportedVersions.join(\", \")}]. Please contact support@usetusk.ai to add support for this version.`,\n          );\n          sendVersionMismatchAlert({\n            moduleName: name,\n            foundVersion: version,\n            supportedVersions: module.supportedVersions,\n          });\n        }\n      } else {\n        logger.error(\n          `No version found for module ${name}, supported versions: [${module.supportedVersions.join(\", \")}]. Please contact support@usetusk.ai to add support for this version.`,\n        );\n        sendVersionMismatchAlert({\n          moduleName: name,\n          foundVersion: undefined,\n          supportedVersions: module.supportedVersions,\n        });\n      }\n      return exports;\n    }\n\n    // Handle file-level patching\n    const files = module.files ?? [];\n    const normalizedName = path.normalize(name);\n    const supportedFileInstrumentations = files\n      .filter((f) => f.name === normalizedName)\n      .filter((f) => this.isSupported(f.supportedVersions, version, false));\n\n    // Only log file version mismatch if NO module supports this file for this version\n    if (\n      supportedFileInstrumentations.length === 0 &&\n      files.some((f) => f.name === normalizedName)\n    ) {\n      // Check if ANY module in this instrumentation has a file that supports this version\n      const isFileSupportedByAnyModule = this._modules\n        .flatMap((m) => m.files || [])\n        .filter((f) => f.name === normalizedName)\n        .some((f) => this.isSupported(f.supportedVersions, version, false));\n\n      if (!isFileSupportedByAnyModule) {\n        logger.error(\n          `Version mismatch for file ${normalizedName}: found v${version}, no compatible file instrumentation found. Please contact support@usetusk.ai to add support for this version.`,\n        );\n        sendVersionMismatchAlert({\n          moduleName: normalizedName,\n          foundVersion: version,\n          supportedVersions: files.flatMap((f) => f.supportedVersions),\n        });\n      }\n    }\n\n    return supportedFileInstrumentations.reduce((patchedExports, file) => {\n      file.moduleExports = patchedExports;\n      if (this._enabled) {\n        logger.debug(\n          `Patching file ${file.name} v${version} for instrumentation ${this.instrumentationName}`,\n        );\n        return file.patch(patchedExports, module.moduleVersion);\n      }\n      return patchedExports;\n    }, exports);\n  }\n}\n","import { TdInstrumentationNodeModuleFile, PatchFunction } from \"./TdInstrumentationNodeModuleFile\";\n\nexport class TdInstrumentationNodeModule {\n  name: string;\n  supportedVersions: string[];\n  patch?: PatchFunction;\n  files: TdInstrumentationNodeModuleFile[];\n  moduleExports?: any;\n  moduleVersion?: string;\n\n  constructor({\n    name,\n    supportedVersions,\n    patch,\n    files,\n  }: {\n    name: string;\n    supportedVersions: string[];\n    patch?: PatchFunction;\n    files?: TdInstrumentationNodeModuleFile[];\n  }) {\n    this.name = name;\n    this.supportedVersions = supportedVersions;\n    this.patch = patch;\n    this.files = files ?? [];\n  }\n}\n","import { createContextKey } from \"@opentelemetry/api\";\nimport { StatusCode, PackageType } from \"@use-tusk/drift-schemas/core/span\";\nimport { SpanKind } from \"@opentelemetry/api\";\nimport type { JsonSchema } from \"@use-tusk/drift-schemas/core/json_schema\";\n\nexport const TD_INSTRUMENTATION_LIBRARY_NAME = \"tusk-drift-sdk\";\n\nexport const REPLAY_TRACE_ID_CONTEXT_KEY = createContextKey(\"td.replayTraceId\");\nexport const SPAN_KIND_CONTEXT_KEY = createContextKey(\"td.spanKind\");\nexport const IS_PRE_APP_START_CONTEXT_KEY = createContextKey(\"td.isPreAppStart\");\nexport const STOP_RECORDING_CHILD_SPANS_CONTEXT_KEY = createContextKey(\n  \"td.stopRecordingChildSpans\",\n);\nexport const CALLING_LIBRARY_CONTEXT_KEY = createContextKey(\"td.callingLibrary\");\n\nexport enum TdSpanAttributes {\n  /**\n   * Presentational information:\n   *   - packageType: is the langauge agnostic type that will be used to classify the package\n   *   - name: is the visual name of the span (e.g. for http could be \"/api/users\", for graphql could be \"update UpdateUser\")\n   *\n   * - packageName: is the name of the package that is instrumented and can be specific to a language\n   * - instrumentationName: is the name of the instrumentation class\n   * - submoduleName: is the name of the submodule that is instrumented (e.g. \"GET\", \"query\", \"execute\", \"get\", etc.)\n   *\n   * Example 1: fetch package\n   *\n   * name: \"/api/users\"\n   * packageType: HTTP\n   * packageName: \"fetch\"\n   * instrumentationName: \"FetchInstrumentation\"\n   * submoduleName: \"GET\"\n   *\n   * Example 2: graphql package\n   *\n   * name: \"update UpdateUser\"\n   * packageType: GRAPHQL\n   * packageName: \"http\"\n   * instrumentationName: \"HttpInstrumentation\"\n   * submoduleName: \"execute\"\n   */\n  NAME = \"td.name\",\n  PACKAGE_TYPE = \"td.packageType\",\n  PACKAGE_NAME = \"td.packageName\",\n  INSTRUMENTATION_NAME = \"td.instrumentationName\",\n  SUBMODULE_NAME = \"td.submodule\",\n  IS_PRE_APP_START = \"td.isPreAppStart\",\n\n  INPUT_VALUE = \"td.inputValue\",\n  OUTPUT_VALUE = \"td.outputValue\",\n  INPUT_SCHEMA_MERGES = \"td.inputSchemaMerges\",\n  OUTPUT_SCHEMA_MERGES = \"td.outputSchemaMerges\",\n  METADATA = \"td.metadata\",\n  TRANSFORM_METADATA = \"td.transformMetadata\",\n}\n\nexport type CleanSpanData = {\n  traceId: string;\n  spanId: string;\n  parentSpanId: string;\n  name: string;\n\n  packageName: string;\n  instrumentationName: string;\n  submoduleName: string;\n\n  packageType?: PackageType;\n\n  // Values are kept as plain JSON for readability\n  inputValue: unknown;\n  outputValue: unknown;\n  // Schemas use the proto JsonSchema type\n  inputSchema: JsonSchema;\n  outputSchema?: JsonSchema; // optional bc replay outbound spans don't have output schemas\n\n  inputSchemaHash: string;\n  outputSchemaHash: string;\n  inputValueHash: string;\n  outputValueHash: string;\n\n  kind: SpanKind;\n\n  status: {\n    code: StatusCode;\n    message: string;\n  };\n\n  isPreAppStart: boolean;\n\n  timestamp: { seconds: number; nanos: number };\n  duration: { seconds: number; nanos: number };\n\n  isRootSpan: boolean;\n\n  metadata?: MetadataObject;\n  transformMetadata?: {\n    transformed: boolean;\n    actions: Array<{\n      type: \"redact\" | \"mask\" | \"replace\" | \"drop\";\n      field: string;\n      reason: string;\n      description?: string;\n    }>;\n  };\n  // sdk-specific\n  isUsed?: boolean;\n  stackTrace?: string;\n};\n\nexport type MockRequestData = {\n  traceId: string;\n  spanId: string;\n  name: string;\n  packageName: string;\n  packageType?: PackageType;\n  instrumentationName: string;\n  submoduleName: string;\n  inputValue: unknown;\n  kind: SpanKind;\n  stackTrace?: string;\n};\n\nexport type MetadataObject = {\n  ENV_VARS?: Record<string, unknown>;\n};\n\nexport type OneOf<T extends object> = {\n  [K in keyof T]: Required<Pick<T, K>> & Partial<Record<Exclude<keyof T, K>, null>>;\n}[keyof T];\n","import { logger } from \"../utils/logger\";\nimport { OriginalGlobalUtils } from \"../utils/OriginalGlobalUtils\";\n\n/**\n * Manages blocked trace IDs to prevent creation and export of spans\n * that belong to traces exceeding size limits.\n *\n * This class uses an in-memory Set for O(1) lookup performance and\n * automatically cleans up old entries to prevent memory leaks.\n */\nexport class TraceBlockingManager {\n  private static instance: TraceBlockingManager | null = null;\n  private blockedTraceIds: Set<string> = new Set();\n  private traceTimestamps: Map<string, number> = new Map();\n  private cleanupIntervalId: NodeJS.Timeout | null = null;\n\n  // Default TTL: 10 minutes (traces should complete well before this)\n  private readonly DEFAULT_TTL_MS = 10 * 60 * 1000;\n\n  // Cleanup interval: 2 minutes\n  private readonly CLEANUP_INTERVAL_MS = 2 * 60 * 1000;\n\n  private constructor() {\n    this.startCleanupInterval();\n  }\n\n  /**\n   * Get singleton instance\n   */\n  static getInstance(): TraceBlockingManager {\n    if (!TraceBlockingManager.instance) {\n      TraceBlockingManager.instance = new TraceBlockingManager();\n    }\n    return TraceBlockingManager.instance;\n  }\n\n  /**\n   * Check if a trace ID is blocked\n   */\n  isTraceBlocked(traceId: string): boolean {\n    return this.blockedTraceIds.has(traceId);\n  }\n\n  /**\n   * Block a trace ID and all future spans for this trace\n   */\n  blockTrace(traceId: string): void {\n    if (!this.blockedTraceIds.has(traceId)) {\n      this.blockedTraceIds.add(traceId);\n      const originalDate = OriginalGlobalUtils.getOriginalDate();\n      this.traceTimestamps.set(traceId, originalDate.getTime());\n      logger.debug(`[TraceBlockingManager] Blocked trace: ${traceId}`);\n    }\n  }\n\n  /**\n   * Start periodic cleanup of old blocked trace IDs\n   */\n  private startCleanupInterval(): void {\n    if (this.cleanupIntervalId) {\n      return;\n    }\n\n    this.cleanupIntervalId = setInterval(() => {\n      this.cleanupOldTraces();\n    }, this.CLEANUP_INTERVAL_MS);\n\n    // Don't keep the process alive just for cleanup\n    if (this.cleanupIntervalId.unref) {\n      this.cleanupIntervalId.unref();\n    }\n  }\n\n  /**\n   * Clean up trace IDs older than TTL\n   */\n  private cleanupOldTraces(): void {\n    const originalDate = OriginalGlobalUtils.getOriginalDate();\n    const now = originalDate.getTime();\n    const expiredTraces: string[] = [];\n\n    for (const [traceId, timestamp] of this.traceTimestamps.entries()) {\n      if (now - timestamp > this.DEFAULT_TTL_MS) {\n        expiredTraces.push(traceId);\n      }\n    }\n\n    for (const traceId of expiredTraces) {\n      this.blockedTraceIds.delete(traceId);\n      this.traceTimestamps.delete(traceId);\n    }\n\n    if (expiredTraces.length > 0) {\n      logger.debug(\n        `[TraceBlockingManager] Cleaned up ${expiredTraces.length} expired blocked trace(s)`,\n      );\n    }\n  }\n}\n","import {\n  trace,\n  context,\n  Span,\n  SpanStatusCode,\n  SpanKind,\n  Context,\n  Attributes,\n  SpanStatus,\n} from \"@opentelemetry/api\";\nimport {\n  IS_PRE_APP_START_CONTEXT_KEY,\n  MetadataObject,\n  REPLAY_TRACE_ID_CONTEXT_KEY,\n  SPAN_KIND_CONTEXT_KEY,\n  STOP_RECORDING_CHILD_SPANS_CONTEXT_KEY,\n  TdSpanAttributes,\n} from \"../types\";\nimport { TuskDriftCore, TuskDriftMode } from \"../TuskDrift\";\nimport { createSpanInputValue } from \"../utils/dataNormalizationUtils\";\nimport { PackageType } from \"@use-tusk/drift-schemas/core/span\";\nimport { SchemaMerges } from \"./JsonSchemaHelper\";\nimport { logger } from \"../utils/logger\";\nimport { TraceBlockingManager } from \"./TraceBlockingManager\";\n\nexport interface SpanInfo {\n  traceId: string;\n  spanId: string;\n  span: Span;\n  context: Context;\n  isPreAppStart: boolean;\n}\n\nexport interface CreateSpanOptions {\n  name: string;\n  kind: SpanKind;\n  attributes?: Attributes;\n  parentContext?: Context;\n  isPreAppStart: boolean;\n}\n\nexport interface SpanExecutorOptions {\n  name: string;\n  kind: SpanKind;\n  packageType?: PackageType;\n  packageName: string;\n  instrumentationName: string;\n  submodule: string;\n  inputValue: Record<string, unknown>;\n  isPreAppStart: boolean;\n  inputSchemaMerges?: SchemaMerges;\n  metadata?: MetadataObject;\n  stopRecordingChildSpans?: boolean;\n}\n\nexport interface AddSpanAttributesOptions {\n  name?: string;\n  packageName?: string;\n  instrumentationName?: string;\n  packageType?: PackageType;\n  submodule?: string;\n  isPreAppStart?: boolean;\n  inputValue?: Record<string, unknown>;\n  outputValue?: Record<string, unknown>;\n  inputSchemaMerges?: SchemaMerges;\n  outputSchemaMerges?: SchemaMerges;\n  metadata?: MetadataObject;\n  transformMetadata?: {\n    transformed: boolean;\n    actions: Array<{\n      type: \"redact\" | \"mask\" | \"replace\" | \"drop\";\n      field: string;\n      reason: string;\n      description?: string;\n    }>;\n  };\n}\n\nexport class SpanUtils {\n  /**\n   * Creates a new span and returns span info including trace ID and span ID\n   */\n  static createSpan(options: CreateSpanOptions): SpanInfo | null {\n    try {\n      // Get tracer from the global trace API\n      const tracer = TuskDriftCore.getInstance().getTracer();\n      const parentContext = options.parentContext || context.active();\n\n      // Check if we should block span creation for this trace\n      // This happens when a previous span in this trace exceeded size limits\n      const activeSpan = trace.getSpan(parentContext);\n      if (activeSpan) {\n        const parentTraceId = activeSpan.spanContext().traceId;\n        const traceBlockingManager = TraceBlockingManager.getInstance();\n\n        if (traceBlockingManager.isTraceBlocked(parentTraceId)) {\n          logger.debug(\n            `[SpanUtils] Skipping span creation for '${options.name}' - trace ${parentTraceId} is blocked`,\n          );\n          return null;\n        }\n      }\n\n      // We can add a bunch of attributes to the span here, everything we want to store in tusk drift backend\n      const span = tracer.startSpan(\n        options.name,\n        {\n          kind: options.kind || SpanKind.CLIENT,\n          attributes: options.attributes || {},\n        },\n        parentContext,\n      );\n\n      const spanContext = span.spanContext();\n\n      const newContext = trace\n        .setSpan(parentContext, span)\n        // This will be used by TCP instrumentation to determine if we have unpatched dependencies\n        .setValue(SPAN_KIND_CONTEXT_KEY, options.kind)\n        .setValue(IS_PRE_APP_START_CONTEXT_KEY, options.isPreAppStart);\n\n      return {\n        traceId: spanContext.traceId,\n        spanId: spanContext.spanId,\n        span,\n        context: newContext,\n        isPreAppStart: options.isPreAppStart,\n      };\n    } catch (error) {\n      logger.error(\"SpanUtils error creating span:\", error);\n      return null;\n    }\n  }\n\n  /**\n   * Executes a function within a span context\n   */\n  static withSpan<T>(spanInfo: SpanInfo, fn: () => T): T {\n    return context.with(spanInfo.context, fn);\n  }\n\n  /**\n   * Execute a function within a properly configured span\n   *\n   * If there is an error creating the span:\n   * - In record mode, the original function will be called\n   * - In replay mode, an error will be thrown\n   *\n   * @param mode The mode of the TuskDrift instance\n   * @param originalFunctionCall The function to call if the span is not created\n   * @param options Span configuration options\n   * @param fn Function to execute within the span\n   * @param contextTarget Optional target object to inject trace context into (for HTTP/fetch)\n   * @returns The result of the function execution\n   */\n  static createAndExecuteSpan<T>(\n    mode: TuskDriftMode,\n    originalFunctionCall: () => T,\n    options: SpanExecutorOptions,\n    fn: (spanInfo: SpanInfo) => T,\n  ): T {\n    // Check if we should stop recording child spans for this span\n    const spanContext = trace.getActiveSpan()?.spanContext();\n    if (spanContext) {\n      const stopRecordingChildSpans = context\n        .active()\n        .getValue(STOP_RECORDING_CHILD_SPANS_CONTEXT_KEY) as boolean;\n      if (stopRecordingChildSpans) {\n        logger.debug(\n          `[SpanUtils] Stopping recording of child spans for span ${spanContext.spanId}, packageName: ${options.packageName}, instrumentationName: ${options.instrumentationName}`,\n        );\n        return originalFunctionCall();\n      }\n    }\n\n    const {\n      name,\n      kind,\n      packageName,\n      instrumentationName,\n      packageType,\n      submodule,\n      inputValue,\n      inputSchemaMerges,\n      isPreAppStart,\n      metadata,\n      stopRecordingChildSpans,\n    } = options;\n\n    let spanInfo: SpanInfo | null = null;\n\n    try {\n      // Create span with standard attributes\n      spanInfo = SpanUtils.createSpan({\n        name,\n        kind,\n        isPreAppStart: options.isPreAppStart,\n        attributes: {\n          [TdSpanAttributes.NAME]: name,\n          [TdSpanAttributes.PACKAGE_NAME]: packageName,\n          [TdSpanAttributes.SUBMODULE_NAME]: submodule,\n          [TdSpanAttributes.INSTRUMENTATION_NAME]: instrumentationName,\n          [TdSpanAttributes.PACKAGE_TYPE]: packageType,\n          [TdSpanAttributes.INPUT_VALUE]: createSpanInputValue(inputValue),\n          [TdSpanAttributes.IS_PRE_APP_START]: isPreAppStart,\n          ...(inputSchemaMerges && {\n            [TdSpanAttributes.INPUT_SCHEMA_MERGES]: JSON.stringify(inputSchemaMerges),\n          }),\n          ...(metadata && {\n            [TdSpanAttributes.METADATA]: JSON.stringify(metadata),\n          }),\n        },\n      });\n    } catch (error) {\n      logger.error(\"SpanExecutor error creating span:\", error);\n      spanInfo = null;\n    }\n\n    if (!spanInfo) {\n      if (mode === TuskDriftMode.REPLAY) {\n        // Safe to throw error since we're in replay mode\n        throw new Error(\"Error creating span in replay mode\");\n      } else {\n        // Call the original function, don't want SDK errors to propagate to the user\n        return originalFunctionCall();\n      }\n    }\n\n    // Set the stopRecordingChildSpans context value if it is true\n    if (stopRecordingChildSpans) {\n      spanInfo.context = spanInfo.context.setValue(STOP_RECORDING_CHILD_SPANS_CONTEXT_KEY, true);\n    }\n\n    // Execute function within span context\n    return SpanUtils.withSpan(spanInfo, () => fn(spanInfo));\n  }\n\n  /**\n   * Gets the current active span info\n   */\n  static getCurrentSpanInfo(): SpanInfo | null {\n    try {\n      const activeSpan = trace.getActiveSpan();\n      if (!activeSpan) {\n        return null;\n      }\n\n      const spanContext = activeSpan.spanContext();\n      return {\n        traceId: spanContext.traceId,\n        spanId: spanContext.spanId,\n        span: activeSpan,\n        context: context.active(),\n        isPreAppStart: context.active().getValue(IS_PRE_APP_START_CONTEXT_KEY) as boolean,\n      };\n    } catch (error) {\n      logger.error(\"SpanUtils error getting current span info:\", error);\n      return null;\n    }\n  }\n\n  /**\n   * Adds attributes to a span\n   */\n  static addSpanAttributes(span: Span, addSpanAttributesOptions: AddSpanAttributesOptions): void {\n    try {\n      const attributes: Attributes = {\n        ...(addSpanAttributesOptions.name && {\n          [TdSpanAttributes.NAME]: addSpanAttributesOptions.name,\n        }),\n        ...(addSpanAttributesOptions.packageName && {\n          [TdSpanAttributes.PACKAGE_NAME]: addSpanAttributesOptions.packageName,\n        }),\n        ...(addSpanAttributesOptions.instrumentationName && {\n          [TdSpanAttributes.INSTRUMENTATION_NAME]: addSpanAttributesOptions.instrumentationName,\n        }),\n        ...(addSpanAttributesOptions.packageType && {\n          [TdSpanAttributes.PACKAGE_TYPE]: addSpanAttributesOptions.packageType,\n        }),\n        ...(addSpanAttributesOptions.submodule && {\n          [TdSpanAttributes.SUBMODULE_NAME]: addSpanAttributesOptions.submodule,\n        }),\n        ...(addSpanAttributesOptions.isPreAppStart && {\n          [TdSpanAttributes.IS_PRE_APP_START]: addSpanAttributesOptions.isPreAppStart,\n        }),\n        ...(addSpanAttributesOptions.inputValue && {\n          [TdSpanAttributes.INPUT_VALUE]: createSpanInputValue(addSpanAttributesOptions.inputValue),\n        }),\n        ...(addSpanAttributesOptions.outputValue && {\n          [TdSpanAttributes.OUTPUT_VALUE]: JSON.stringify(addSpanAttributesOptions.outputValue),\n        }),\n        ...(addSpanAttributesOptions.inputSchemaMerges && {\n          [TdSpanAttributes.INPUT_SCHEMA_MERGES]: JSON.stringify(\n            addSpanAttributesOptions.inputSchemaMerges,\n          ),\n        }),\n        ...(addSpanAttributesOptions.outputSchemaMerges && {\n          [TdSpanAttributes.OUTPUT_SCHEMA_MERGES]: JSON.stringify(\n            addSpanAttributesOptions.outputSchemaMerges,\n          ),\n        }),\n        ...(addSpanAttributesOptions.metadata && {\n          [TdSpanAttributes.METADATA]: JSON.stringify(addSpanAttributesOptions.metadata),\n        }),\n        ...(addSpanAttributesOptions.transformMetadata && {\n          [TdSpanAttributes.TRANSFORM_METADATA]: JSON.stringify(\n            addSpanAttributesOptions.transformMetadata,\n          ),\n        }),\n      };\n      span.setAttributes(attributes);\n    } catch (error) {\n      logger.error(\"SpanUtils error adding span attributes:\", error);\n    }\n  }\n\n  static setStatus(span: Span, status: SpanStatus): void {\n    try {\n      span.setStatus(status);\n    } catch (error) {\n      logger.error(\"SpanUtils error setting span status:\", error);\n    }\n  }\n\n  /**\n   * Sets span status and ends the span\n   *\n   * Spans are only exported once span.end() is called\n   */\n  static endSpan(span: Span, status?: { code: SpanStatusCode; message?: string }): void {\n    try {\n      if (status) {\n        span.setStatus(status);\n      }\n      span.end();\n    } catch (error) {\n      logger.error(\"SpanUtils error ending span:\", error);\n    }\n  }\n\n  /**\n   * Extracts trace ID from current context\n   */\n  static getCurrentTraceId(): string | null {\n    try {\n      const spanInfo = SpanUtils.getCurrentSpanInfo();\n      return spanInfo?.traceId || null;\n    } catch (error) {\n      logger.error(\"SpanUtils error getting current trace id:\", error);\n      return null;\n    }\n  }\n\n  static setCurrentReplayTraceId(replayTraceId: string): Context | null {\n    try {\n      return context.active().setValue(REPLAY_TRACE_ID_CONTEXT_KEY, replayTraceId);\n    } catch (error) {\n      logger.error(\"SpanUtils error setting current replay trace id:\", error);\n      return null;\n    }\n  }\n\n  /**\n   * Gets the current replay trace ID from the context\n   */\n  static getCurrentReplayTraceId(): string | null {\n    try {\n      const activeContext = context.active();\n      return activeContext.getValue(REPLAY_TRACE_ID_CONTEXT_KEY) as string | null;\n    } catch (error) {\n      logger.error(\"SpanUtils error getting current replay trace id:\", error);\n      return null;\n    }\n  }\n\n  /**\n   * Extracts span ID from current context\n   */\n  static getCurrentSpanId(): string | null {\n    try {\n      const spanInfo = SpanUtils.getCurrentSpanInfo();\n      return spanInfo?.spanId || null;\n    } catch (error) {\n      logger.error(\"SpanUtils error getting current span id:\", error);\n      return null;\n    }\n  }\n\n  /**\n   * Gets trace and span IDs as a combined string for logging\n   */\n  static getTraceInfo(): string {\n    let traceId = null;\n    let spanId = null;\n    try {\n      traceId = SpanUtils.getCurrentTraceId();\n      spanId = SpanUtils.getCurrentSpanId();\n    } catch (error) {\n      logger.error(\"SpanUtils error getting trace info:\", error);\n      return \"no-trace\";\n    }\n\n    if (traceId && spanId) {\n      return `trace=${traceId} span=${spanId}`;\n    }\n\n    return \"no-trace\";\n  }\n}\n","import * as zlib from \"zlib\";\nimport { logger } from \"../../../../core/utils/logger\";\n\n/**\n * Supported compression encodings and their corresponding zlib decompression functions\n */\nconst ENCODING_FUNCTION_MAP = {\n  gzip: \"gunzip\",\n  deflate: \"inflate\",\n  br: \"brotliDecompress\",\n} as const;\n\ntype SupportedEncoding = keyof typeof ENCODING_FUNCTION_MAP;\n\n/**\n * Decompresses a buffer using the specified encoding\n *\n * @param buffer - The compressed buffer to decompress\n * @param encoding - The compression encoding (gzip, deflate, br)\n * @returns Promise<Buffer> - The decompressed buffer\n */\nexport async function decompressBuffer(buffer: Buffer, encoding: string): Promise<Buffer> {\n  const normalizedEncoding = encoding.toLowerCase().trim() as SupportedEncoding;\n\n  if (normalizedEncoding in ENCODING_FUNCTION_MAP) {\n    return new Promise((resolve, reject) => {\n      const zlibFunction = ENCODING_FUNCTION_MAP[normalizedEncoding];\n      (zlib as any)[zlibFunction](buffer, (err: Error | null, decoded: Buffer) => {\n        if (err) {\n          reject(err);\n        } else {\n          resolve(decoded);\n        }\n      });\n    });\n  }\n\n  logger.debug(`Unknown encoding: ${encoding} - skipping decoding.`);\n  return Promise.resolve(buffer);\n}\n\n/**\n * Checks if a string represents a supported compression encoding\n *\n * @param encoding - The encoding string to check\n * @returns boolean - True if the encoding is supported\n */\nexport function isSupportedEncoding(encoding: string): boolean {\n  const normalizedEncoding = encoding.toLowerCase().trim();\n  return normalizedEncoding in ENCODING_FUNCTION_MAP;\n}\n\nexport function normalizeHeaders(headers: Record<string, any>): Record<string, any> {\n  const normalized: Record<string, any> = {};\n  for (const [name, value] of Object.entries(headers)) {\n    normalized[name.toLowerCase()] = value;\n  }\n  return normalized;\n}\n","/**\n * Utility functions for handling binary data and encoding detection\n */\n\n/**\n * Checks if a buffer contains valid UTF-8 text\n * Uses TextDecoder with fatal flag\n *\n * @param buffer - The buffer to check\n * @returns boolean - True if the buffer contains valid UTF-8 text\n */\nexport function isUtf8(buffer: Buffer): boolean {\n  if (buffer.length === 0) {\n    return true;\n  }\n\n  const decoder = new TextDecoder(\"utf-8\", { fatal: true });\n\n  try {\n    // If this succeeds, the buffer contains valid UTF-8\n    decoder.decode(buffer);\n    return true;\n  } catch (error) {\n    // If this fails, the buffer contains invalid UTF-8 (likely binary)\n    return false;\n  }\n}\n\n/**\n * Safely converts a buffer to string using appropriate encoding\n *\n * @param buffer - The buffer to convert\n * @returns object with content and encoding used\n */\nexport function bufferToString(buffer: Buffer): { content: string; encoding: \"utf8\" | \"base64\" } {\n  if (isUtf8(buffer)) {\n    return {\n      content: buffer.toString(\"utf8\"),\n      encoding: \"utf8\",\n    };\n  } else {\n    return {\n      content: buffer.toString(\"base64\"),\n      encoding: \"base64\",\n    };\n  }\n}\n\n/**\n * Safely combines multiple chunks into a single buffer\n *\n * @param chunks - Array of chunks (can be strings or Buffers)\n * @returns Buffer - Combined buffer\n */\nexport function combineChunks(chunks: (string | Buffer)[]): Buffer {\n  const buffers: Buffer[] = chunks.map((chunk) => {\n    if (Buffer.isBuffer(chunk)) {\n      return chunk;\n    }\n    return Buffer.from(chunk);\n  });\n\n  return Buffer.concat(buffers);\n}\n","import { decompressBuffer } from \"./bodyDecompression\";\nimport { DecodedType } from \"@use-tusk/drift-schemas/core/json_schema\";\nimport { logger } from \"../../../../core/utils/logger\";\n\n// Mapping from content-type to decoded type\nconst CONTENT_TYPE_MAPPING: Record<string, DecodedType> = {\n  // JSON\n  \"application/json\": DecodedType.JSON,\n\n  // HTML\n  \"text/html\": DecodedType.HTML,\n\n  // CSS\n  \"text/css\": DecodedType.CSS,\n\n  // JavaScript\n  \"text/javascript\": DecodedType.JAVASCRIPT,\n  \"application/javascript\": DecodedType.JAVASCRIPT,\n  \"application/x-javascript\": DecodedType.JAVASCRIPT,\n\n  // XML\n  \"text/xml\": DecodedType.XML,\n  \"application/xml\": DecodedType.XML,\n\n  // SVG (special case - XML-based but can be rendered)\n  \"image/svg+xml\": DecodedType.SVG,\n\n  // YAML\n  \"application/yaml\": DecodedType.YAML,\n  \"application/x-yaml\": DecodedType.YAML,\n  \"text/yaml\": DecodedType.YAML,\n  \"text/x-yaml\": DecodedType.YAML,\n\n  // Plain text\n  \"text/plain\": DecodedType.PLAIN_TEXT,\n\n  // Markdown\n  \"text/markdown\": DecodedType.MARKDOWN,\n  \"text/x-markdown\": DecodedType.MARKDOWN,\n\n  // CSV\n  \"text/csv\": DecodedType.CSV,\n  \"application/csv\": DecodedType.CSV,\n\n  // SQL\n  \"application/sql\": DecodedType.SQL,\n  \"text/sql\": DecodedType.SQL,\n\n  // GraphQL\n  \"application/graphql\": DecodedType.GRAPHQL,\n\n  // Form data\n  \"application/x-www-form-urlencoded\": DecodedType.FORM_DATA,\n  \"multipart/form-data\": DecodedType.MULTIPART_FORM,\n\n  // PDF\n  \"application/pdf\": DecodedType.PDF,\n\n  // Specific image formats\n  \"image/jpeg\": DecodedType.JPEG,\n  \"image/jpg\": DecodedType.JPEG,\n  \"image/png\": DecodedType.PNG,\n  \"image/gif\": DecodedType.GIF,\n  \"image/webp\": DecodedType.WEBP,\n  \"image/bmp\": DecodedType.JPEG,\n  \"image/tiff\": DecodedType.JPEG,\n  \"image/ico\": DecodedType.PNG,\n\n  // Audio (keep generic since audio formatting is similar)\n  \"audio/mpeg\": DecodedType.AUDIO,\n  \"audio/mp3\": DecodedType.AUDIO,\n  \"audio/wav\": DecodedType.AUDIO,\n  \"audio/ogg\": DecodedType.AUDIO,\n  \"audio/webm\": DecodedType.AUDIO,\n\n  // Video (keep generic since video formatting is similar)\n  \"video/mp4\": DecodedType.VIDEO,\n  \"video/webm\": DecodedType.VIDEO,\n  \"video/ogg\": DecodedType.VIDEO,\n  \"video/avi\": DecodedType.VIDEO,\n  \"video/mov\": DecodedType.VIDEO,\n\n  // Specific binary formats\n  \"application/zip\": DecodedType.ZIP,\n  \"application/gzip\": DecodedType.GZIP,\n  \"application/x-gzip\": DecodedType.GZIP,\n\n  // Generic binary\n  \"application/octet-stream\": DecodedType.BINARY,\n  \"application/tar\": DecodedType.BINARY,\n  \"application/rar\": DecodedType.BINARY,\n  \"application/7z\": DecodedType.BINARY,\n};\n\n/**\n * Async HTTP body encoder that base64 encodes the body buffer\n */\nexport async function httpBodyEncoder({\n  bodyBuffer,\n  contentEncoding,\n}: {\n  bodyBuffer: Buffer;\n  contentEncoding?: string;\n}): Promise<string> {\n  // First check if we need to decompress the body\n  let processedBuffer = bodyBuffer;\n\n  if (contentEncoding) {\n    try {\n      processedBuffer = await decompressBuffer(bodyBuffer, contentEncoding);\n    } catch (error) {\n      logger.warn(`Failed to decompress body with encoding ${contentEncoding}:`, error);\n    }\n  }\n\n  return processedBuffer.toString(\"base64\");\n}\n\n/**\n * Parses a Content-Type header and returns the corresponding decoded type enum\n * @param contentType - The Content-Type header value (e.g., \"application/json; charset=utf-8\")\n * @returns The corresponding DecodedType enum value\n */\nexport function getDecodedType(\n  contentType: string | string[] | undefined,\n): DecodedType | undefined {\n  if (!contentType) {\n    return undefined;\n  }\n\n  // Handle array values (when same header appears multiple times)\n  // Should rarely happen, but just in case. First one is usually the \"original\" one.\n  const contentTypeString =\n    Array.isArray(contentType) && contentType.length > 0 ? contentType[0] : contentType;\n\n  if (!contentTypeString || typeof contentTypeString !== \"string\") {\n    logger.debug(`Invalid Content-Type header: ${contentType}`);\n    return undefined;\n  }\n\n  // Convert to lowercase and extract the main media type (before semicolon)\n  const mainType = contentTypeString.toLowerCase().split(\";\")[0].trim();\n  return CONTENT_TYPE_MAPPING[mainType];\n}\n\nexport const ACCEPTABLE_CONTENT_TYPES = new Set([DecodedType.JSON, DecodedType.PLAIN_TEXT]);\n","import { EventEmitter } from \"events\";\nimport { OriginalGlobalUtils } from \"../../../../core/utils\";\n\nexport interface TdHttpMockSocketOptions {\n  protocol?: \"http\" | \"https\";\n  family?: number;\n  port?: number;\n  hostname?: string;\n  host?: string;\n}\n\n/**\n * Mock socket implementation for Tusk Drift HTTP replay\n */\nexport class TdHttpMockSocket extends EventEmitter {\n  public authorized?: boolean;\n  public _hadError: boolean;\n  public connecting: boolean;\n  public writableLength: number;\n  public bufferSize: number;\n  public writable: boolean;\n  public readable: boolean;\n  public pending: boolean;\n  public destroyed: boolean;\n  public encrypted?: boolean;\n  public timeout: number;\n  public localAddress: string;\n  public remoteFamily: string;\n  public localPort: number;\n  public remoteAddress: string;\n  public remotePort: number;\n  public readableEnded: boolean = false;\n  public writableFinished: boolean = false;\n\n  constructor(options: TdHttpMockSocketOptions = {}) {\n    super();\n\n    // Set SSL/TLS properties for HTTPS\n    if (options.protocol === \"https\") {\n      this.authorized = true;\n      this.encrypted = true;\n    }\n\n    this.bufferSize = 0;\n    this.writableLength = 0;\n    this.writable = true;\n    this.readable = true;\n    this.pending = false;\n    this.destroyed = false;\n    this.connecting = true;\n    this._hadError = false;\n    this.timeout = 0;\n\n    // Set up network addressing\n    const ipv6 = options.family === 6;\n    this.remoteFamily = ipv6 ? \"IPv6\" : \"IPv4\";\n    this.remoteAddress = ipv6 ? \"::1\" : \"127.0.0.1\";\n    this.localAddress = this.remoteAddress;\n\n    // Set ports\n    const port = options.port || (options.protocol === \"https\" ? 443 : 80);\n    this.remotePort = Number.parseInt(String(port), 10);\n    this.localPort = this.remotePort;\n  }\n\n  setNoDelay(): this {\n    return this;\n  }\n\n  setKeepAlive(): this {\n    return this;\n  }\n\n  resume(): this {\n    return this;\n  }\n\n  ref(): this {\n    return this;\n  }\n\n  unref(): this {\n    return this;\n  }\n\n  write(): boolean {\n    return false;\n  }\n\n  address(): { port: number; family: string; address: string } {\n    return {\n      port: this.remotePort,\n      family: this.remoteFamily,\n      address: this.remoteAddress,\n    };\n  }\n\n  setTimeout(timeoutMs: number, callback?: () => void): this {\n    this.timeout = timeoutMs;\n    if (callback) {\n      this.once(\"timeout\", callback);\n    }\n    return this;\n  }\n\n  /**\n   * Artificial delay that will trip socket timeouts when appropriate.\n   * Doesn't actually wait for time to pass.\n   * Timeout events don't necessarily end the request.\n   */\n  applyDelay(delayMs: number): void {\n    if (this.timeout && delayMs > this.timeout) {\n      this.emit(\"timeout\");\n    }\n  }\n\n  getPeerCertificate(): string {\n    const originalDate = OriginalGlobalUtils.getOriginalDate();\n    return Buffer.from((Math.random() * 1e4 + originalDate.getTime()).toString()).toString(\n      \"base64\",\n    );\n  }\n\n  /**\n   * Denotes that no more I/O activity should happen on this socket.\n   * Sets flags and emits 'close' and optional 'error' events.\n   */\n  destroy(err?: Error): this {\n    if (this.destroyed) {\n      return this;\n    }\n\n    this.destroyed = true;\n    this.writable = false;\n    this.readable = false;\n    this.writableFinished = true;\n    this.readableEnded = true;\n\n    process.nextTick(() => {\n      if (err) {\n        this._hadError = true;\n        this.emit(\"error\", err);\n      }\n      this.emit(\"close\");\n    });\n\n    return this;\n  }\n}\n","export class EnvVarTracker {\n  // This should be a mapping between trace id and env var\n  private static envVars = new Map<string, Record<string, string | undefined>>();\n\n  static setEnvVar({\n    traceId,\n    key,\n    value,\n  }: {\n    traceId: string;\n    key: string;\n    value: string | undefined;\n  }): void {\n    this.envVars.set(traceId, {\n      ...(this.envVars.get(traceId) || {}),\n      [key]: value,\n    });\n  }\n\n  static setEnvVars(traceId: string, envVars: Record<string, string | undefined>): void {\n    this.envVars.set(traceId, envVars);\n  }\n\n  static getEnvVar(traceId: string, key: string): string | undefined {\n    return this.envVars.get(traceId)?.[key];\n  }\n\n  static getEnvVars(traceId: string): Record<string, string | undefined> | undefined {\n    return this.envVars.get(traceId);\n  }\n\n  static clearEnvVars(traceId: string): void {\n    this.envVars.delete(traceId);\n  }\n}\n","import { SpanUtils } from \"../../../core/tracing/SpanUtils\";\nimport { logger } from \"../../../core/utils/logger\";\n\n/**\n * Global date tracker that maintains the latest mock response timestamp per trace.\n * This is used to provide consistent dates in replay mode.\n */\nexport class DateTracker {\n  private static traceToLatestTimestamp = new Map<string, Date>();\n\n  /**\n   * Updates the latest timestamp for a given trace ID\n   */\n  static updateLatestTimestamp(traceId: string, timestamp: string | number): void {\n    const date = new Date(timestamp);\n    this.traceToLatestTimestamp.set(traceId, date);\n    logger.debug(`Updated latest timestamp for trace ${traceId}: ${date.toISOString()}`);\n  }\n\n  /**\n   * Gets the latest timestamp for the current trace\n   */\n  static getCurrentTraceLatestDate(): Date | null {\n    const replayTraceId = SpanUtils.getCurrentReplayTraceId();\n    if (!replayTraceId) {\n      return null;\n    }\n\n    return this.traceToLatestTimestamp.get(replayTraceId) || null;\n  }\n\n  /**\n   * Clears the timestamp for a given trace ID (useful for cleanup)\n   */\n  static clearTrace(traceId: string): void {\n    this.traceToLatestTimestamp.delete(traceId);\n  }\n\n  /**\n   * Clears all tracked timestamps (useful for testing)\n   */\n  static clearAll(): void {\n    this.traceToLatestTimestamp.clear();\n  }\n}\n","import * as crypto from \"crypto\";\nimport { logger } from \"../utils/logger\";\nimport {\n  JsonSchemaType,\n  EncodingType,\n  DecodedType,\n  type JsonSchema,\n} from \"@use-tusk/drift-schemas/core/json_schema\";\n\n// Standardized schema type mapping\nconst jsToJsonSchemaTypeMapping = {\n  [\"long\"]: JsonSchemaType.NUMBER,\n  [\"undefined\"]: JsonSchemaType.UNDEFINED,\n  [\"string\"]: JsonSchemaType.STRING,\n  [\"number\"]: JsonSchemaType.NUMBER,\n  [\"Number\"]: JsonSchemaType.NUMBER,\n  [\"boolean\"]: JsonSchemaType.BOOLEAN,\n  [\"null\"]: JsonSchemaType.NULL,\n  [\"bigint\"]: JsonSchemaType.NUMBER,\n  [\"Error\"]: JsonSchemaType.OBJECT,\n  [\"function\"]: JsonSchemaType.FUNCTION,\n  [\"RegExp\"]: JsonSchemaType.OBJECT,\n  [\"Set\"]: JsonSchemaType.UNORDERED_LIST,\n  [\"symbol\"]: JsonSchemaType.STRING,\n  [\"Date\"]: JsonSchemaType.STRING,\n  [\"Int8Array\"]: JsonSchemaType.STRING,\n  [\"Uint8Array\"]: JsonSchemaType.STRING,\n  [\"Uint8ClampedArray\"]: JsonSchemaType.STRING,\n  [\"Int16Array\"]: JsonSchemaType.STRING,\n  [\"Uint16Array\"]: JsonSchemaType.STRING,\n  [\"Int32Array\"]: JsonSchemaType.STRING,\n  [\"Uint32Array\"]: JsonSchemaType.STRING,\n  [\"Float32Array\"]: JsonSchemaType.STRING,\n  [\"Float64Array\"]: JsonSchemaType.STRING,\n  [\"DataView\"]: JsonSchemaType.STRING,\n  [\"ArrayBuffer\"]: JsonSchemaType.STRING,\n  [\"object\"]: JsonSchemaType.OBJECT,\n  [\"Object\"]: JsonSchemaType.OBJECT,\n  [\"Map\"]: JsonSchemaType.OBJECT,\n  [\"Array\"]: JsonSchemaType.ORDERED_LIST,\n  [\"Arguments\"]: JsonSchemaType.ORDERED_LIST,\n} as const;\n\n// Re-export proto types for convenience\nexport { JsonSchemaType, EncodingType, DecodedType, type JsonSchema };\n\n// The following types can be merged with the generated schema to provide additional information\n// This is set in the instrumentation layer and merged with the generated schema\nexport interface SchemaMergeTypes {\n  encoding?: EncodingType;\n  decodedType?: DecodedType;\n  matchImportance?: number; // Should be between 0 and 1, 0 being the lowest importance and 1 being the highest importance\n}\n\nexport type SchemaMerges = Record<string, SchemaMergeTypes>;\n\n/**\n * Utility class for JSON schema generation and hashing\n */\nexport class JsonSchemaHelper {\n  /**\n   * Determine the detailed type of a value using standardized mapping\n   */\n  static getDetailedType(value: any): JsonSchemaType {\n    if (value === null) {\n      return jsToJsonSchemaTypeMapping[\"null\"];\n    }\n\n    if (value === undefined) {\n      return jsToJsonSchemaTypeMapping[\"undefined\"];\n    }\n\n    const primitiveType = typeof value;\n\n    if (primitiveType === \"object\") {\n      // More specific object type detection\n      const objectType = Object.prototype.toString.call(value).slice(8, -1);\n\n      if (objectType === \"Array\") {\n        return jsToJsonSchemaTypeMapping[\"Array\"];\n      }\n\n      if (objectType === \"Date\") {\n        return jsToJsonSchemaTypeMapping[\"Date\"];\n      }\n\n      if (objectType === \"RegExp\") {\n        return jsToJsonSchemaTypeMapping[\"RegExp\"];\n      }\n\n      if (objectType === \"Error\") {\n        return jsToJsonSchemaTypeMapping[\"Error\"];\n      }\n\n      if (objectType === \"Set\") {\n        return jsToJsonSchemaTypeMapping[\"Set\"];\n      }\n\n      if (objectType === \"Map\") {\n        return jsToJsonSchemaTypeMapping[\"Map\"];\n      }\n\n      // Typed arrays\n      if (objectType === \"Int8Array\") return jsToJsonSchemaTypeMapping[\"Int8Array\"];\n      if (objectType === \"Uint8Array\") return jsToJsonSchemaTypeMapping[\"Uint8Array\"];\n      if (objectType === \"Uint8ClampedArray\") return jsToJsonSchemaTypeMapping[\"Uint8ClampedArray\"];\n      if (objectType === \"Int16Array\") return jsToJsonSchemaTypeMapping[\"Int16Array\"];\n      if (objectType === \"Uint16Array\") return jsToJsonSchemaTypeMapping[\"Uint16Array\"];\n      if (objectType === \"Int32Array\") return jsToJsonSchemaTypeMapping[\"Int32Array\"];\n      if (objectType === \"Uint32Array\") return jsToJsonSchemaTypeMapping[\"Uint32Array\"];\n      if (objectType === \"Float32Array\") return jsToJsonSchemaTypeMapping[\"Float32Array\"];\n      if (objectType === \"Float64Array\") return jsToJsonSchemaTypeMapping[\"Float64Array\"];\n      if (objectType === \"DataView\") return jsToJsonSchemaTypeMapping[\"DataView\"];\n      if (objectType === \"ArrayBuffer\") return jsToJsonSchemaTypeMapping[\"ArrayBuffer\"];\n\n      if (objectType === \"Arguments\") {\n        return jsToJsonSchemaTypeMapping[\"Arguments\"];\n      }\n\n      // Default to generic object\n      return jsToJsonSchemaTypeMapping[\"object\"];\n    }\n\n    if (primitiveType === \"string\") {\n      return jsToJsonSchemaTypeMapping[\"string\"];\n    }\n\n    if (primitiveType === \"number\") {\n      return jsToJsonSchemaTypeMapping[\"number\"];\n    }\n\n    if (primitiveType === \"bigint\") {\n      return jsToJsonSchemaTypeMapping[\"bigint\"];\n    }\n\n    if (primitiveType === \"boolean\") {\n      return jsToJsonSchemaTypeMapping[\"boolean\"];\n    }\n\n    if (primitiveType === \"function\") {\n      return jsToJsonSchemaTypeMapping[\"function\"];\n    }\n\n    if (primitiveType === \"symbol\") {\n      return jsToJsonSchemaTypeMapping[\"symbol\"];\n    }\n\n    // Fallback for unknown types\n    return jsToJsonSchemaTypeMapping[\"string\"];\n  }\n\n  /**\n   * Merge schema override with generated schema\n   * This allows partial overrides while preserving generated properties\n   */\n  private static mergeSchemaWithMerges(\n    generatedSchema: JsonSchema,\n    merges: SchemaMergeTypes,\n  ): JsonSchema {\n    const merged: JsonSchema = { ...generatedSchema };\n\n    // Apply merges properties\n    Object.keys(merges).forEach((key) => {\n      (merged as any)[key] = (merges as any)[key];\n    });\n\n    return merged;\n  }\n\n  /**\n   * Generate schema from data object using standardized types\n   *\n   * Note: We properties always exists on JsonSchema because proto3 maps cannot be marked optional.\n   * The JSON data is a bit inefficient because of this, but the easiest way to handle this is to keep it for now.\n   */\n  static generateSchema(data: any, schemaMerges?: SchemaMerges): JsonSchema {\n    if (data === null) {\n      return { type: jsToJsonSchemaTypeMapping[\"null\"], properties: {} };\n    }\n\n    if (data === undefined) {\n      return { type: jsToJsonSchemaTypeMapping[\"undefined\"], properties: {} };\n    }\n\n    const detailedType = JsonSchemaHelper.getDetailedType(data);\n\n    if (detailedType === JsonSchemaType.ORDERED_LIST) {\n      if (Array.isArray(data) && data.length === 0) {\n        return { type: JsonSchemaType.ORDERED_LIST, properties: {} };\n      }\n      const items =\n        Array.isArray(data) && data.length > 0\n          ? JsonSchemaHelper.generateSchema(data[0])\n          : undefined;\n      if (items !== undefined) {\n        return {\n          type: JsonSchemaType.ORDERED_LIST,\n          items,\n          properties: {},\n        };\n      }\n      return { type: JsonSchemaType.ORDERED_LIST, properties: {} };\n    }\n\n    if (detailedType === JsonSchemaType.UNORDERED_LIST) {\n      // Handle Set objects\n      if (data instanceof Set) {\n        const firstItem = data.size > 0 ? data.values().next().value : null;\n        if (firstItem !== null) {\n          return {\n            type: JsonSchemaType.UNORDERED_LIST,\n            items: JsonSchemaHelper.generateSchema(firstItem),\n            properties: {},\n          };\n        }\n      }\n      return { type: JsonSchemaType.UNORDERED_LIST, properties: {} };\n    }\n\n    if (detailedType === JsonSchemaType.OBJECT) {\n      const schema: JsonSchema = { type: JsonSchemaType.OBJECT, properties: {} };\n\n      // Handle Map objects\n      if (data instanceof Map) {\n        data.forEach((value, key) => {\n          const keyString = String(key);\n          const generatedSchema = JsonSchemaHelper.generateSchema(value);\n\n          // Check for schema override for this key\n          if (schemaMerges && schemaMerges[keyString]) {\n            schema.properties[keyString] = JsonSchemaHelper.mergeSchemaWithMerges(\n              generatedSchema,\n              schemaMerges[keyString],\n            );\n          } else {\n            schema.properties[keyString] = generatedSchema;\n          }\n        });\n      } else if (typeof data === \"object\") {\n        Object.keys(data).forEach((key) => {\n          const generatedSchema = JsonSchemaHelper.generateSchema(data[key]);\n\n          // Check for schema override for this key\n          if (schemaMerges && schemaMerges[key]) {\n            schema.properties[key] = JsonSchemaHelper.mergeSchemaWithMerges(\n              generatedSchema,\n              schemaMerges[key],\n            );\n          } else {\n            schema.properties[key] = generatedSchema;\n          }\n        });\n      }\n\n      return schema;\n    }\n\n    // For primitive types, return just the type\n    return { type: detailedType, properties: {} };\n  }\n\n  /**\n   * Generate deterministic hash for any data\n   */\n  static generateDeterministicHash(data: any): string {\n    // Sort object keys to ensure deterministic hashing\n    const sortedData = JsonSchemaHelper.sortObjectKeysRecursively(data);\n    const jsonString = JSON.stringify(sortedData);\n    return crypto.createHash(\"sha256\").update(jsonString).digest(\"hex\");\n  }\n\n  /**\n   * Recursively sort object keys for deterministic hashing\n   */\n  static sortObjectKeysRecursively(obj: any): any {\n    if (obj === null || obj === undefined) {\n      return obj;\n    }\n\n    if (Array.isArray(obj)) {\n      return obj.map((item) => JsonSchemaHelper.sortObjectKeysRecursively(item));\n    }\n\n    if (typeof obj === \"object\") {\n      const sortedObj: any = {};\n      Object.keys(obj)\n        .sort()\n        .forEach((key) => {\n          sortedObj[key] = JsonSchemaHelper.sortObjectKeysRecursively(obj[key]);\n        });\n      return sortedObj;\n    }\n\n    return obj;\n  }\n\n  /**\n   * Decode data based on schema merges containing encoding and decodedType\n   */\n  private static decodeDataWithMerges(data: any, schemaMerges?: SchemaMerges): any {\n    if (!schemaMerges) {\n      return data;\n    }\n\n    const decodedData = { ...data };\n\n    // Process each schema override that has encoding and decodedType\n    for (const [key, schema] of Object.entries(schemaMerges)) {\n      if (schema.encoding && schema.decodedType && data[key] !== undefined) {\n        try {\n          let decodedValue = data[key];\n\n          // Decode based on encoding type\n          if (schema.encoding === EncodingType.BASE64 && typeof decodedValue === \"string\") {\n            const buffer = Buffer.from(decodedValue, \"base64\");\n            decodedValue = buffer.toString(\"utf8\");\n          }\n\n          // Parse based on decoded type\n          if (schema.decodedType === DecodedType.JSON && typeof decodedValue === \"string\") {\n            decodedValue = JSON.parse(decodedValue);\n          }\n\n          decodedData[key] = decodedValue;\n        } catch (error) {\n          logger.debug(`[JsonSchemaHelper] Failed to decode ${key}:`, error);\n          // Keep original value if decoding fails\n          decodedData[key] = data[key];\n        }\n      }\n    }\n\n    return decodedData;\n  }\n\n  /**\n   * Generate schema and hash for input/output data\n   *\n   * This method handles schema merges by decoding data (e.g., base64 -> JSON) and\n   * generating schemas/hashes with schema merges applied.\n   *\n   * @param data - The original input data to process\n   * @param schemaMerges - Optional schema merges could contain encoding, decodedType, and/or matchImportance info\n   * @returns Object containing:\n   *   - schema: JsonSchema for the original data with merges applied\n   *   - decodedValueHash: Hash of the decoded data values (what the data looks like after decoding)\n   *   - decodedSchemaHash: Hash of the decoded data schema (structure of decoded data) with schema merges applied\n   *\n   *\n   * E.g. if body is base64-encoded JSON, the schema will show\n   *\n   * \"body\": {\n   *    \"type\": \"OBJECT\",\n   *    \"properties\": {\n   *       \"location\": { \"type\": \"STRING\" },\n   *       \"current\": {\n   *         \"type\": \"OBJECT\",\n   *         \"properties\": {\n   *           \"temp_F\": { \"type\": \"STRING\" },\n   *           \"humidity\": { \"type\": \"STRING\" },\n   *         }\n   *       },\n   *     },\n   *    \"encoding\": \"BASE64\",\n   *    \"decodedType\": \"JSON\"\n   *  },\n   *\n   * Where the actual body is stored as a base64-encoded JSON string but the schema still demonstrates the structure of the JSON object.\n   */\n  static generateSchemaAndHash(\n    data: any,\n    schemaMerges?: SchemaMerges,\n  ): {\n    schema: JsonSchema;\n    decodedValueHash: string;\n    decodedSchemaHash: string;\n  } {\n    // Simulate the same JSON serialization/deserialization that happens during recording\n    // This removes undefined values and normalizes the structure\n    const normalizedData = JSON.parse(JSON.stringify(data));\n\n    // Decode data based on schema merges (e.g., base64 -> JSON)\n    const decodedData = JsonSchemaHelper.decodeDataWithMerges(normalizedData, schemaMerges);\n\n    // Generate schema for the decoded data with the schema merges applied\n    const schema = JsonSchemaHelper.generateSchema(decodedData, schemaMerges);\n\n    // Generate hashes for decoded data\n    const decodedValueHash = JsonSchemaHelper.generateDeterministicHash(decodedData);\n    const decodedSchemaHash = JsonSchemaHelper.generateDeterministicHash(schema);\n\n    return { schema, decodedValueHash, decodedSchemaHash };\n  }\n\n  /**\n   * Get the standardized type mapping for reference\n   */\n  static getTypeMapping(): typeof jsToJsonSchemaTypeMapping {\n    return jsToJsonSchemaTypeMapping;\n  }\n}\n","import { SpanUtils } from \"../../../core/tracing/SpanUtils\";\nimport { TuskDriftCore } from \"../../../core/TuskDrift\";\nimport { DateTracker } from \"../trackers\";\nimport { JsonSchema, JsonSchemaHelper, SchemaMerges } from \"../../../core/tracing/JsonSchemaHelper\";\nimport { CleanSpanData, MockRequestData } from \"../../../core/types\";\nimport { StatusCode } from \"@use-tusk/drift-schemas/core/span\";\nimport { OriginalGlobalUtils, logger } from \"../../../core/utils\";\n\nexport interface MockRequest {\n  service: string;\n  operation: string;\n  target: string;\n  inputData?: any;\n  inputSchema?: JsonSchema;\n}\n\nexport interface MockResponse {\n  result: any;\n}\n\n// Add filler values for the clean span data fields we don't care about when fetching mocks\nfunction convertMockRequestDataToCleanSpanData(\n  mockRequestData: MockRequestData,\n  tuskDrift: TuskDriftCore,\n  inputValueSchemaMerges?: SchemaMerges,\n): CleanSpanData {\n  const {\n    schema: inputSchema,\n    decodedValueHash: inputValueHash,\n    decodedSchemaHash: inputSchemaHash,\n  } = JsonSchemaHelper.generateSchemaAndHash(mockRequestData.inputValue, inputValueSchemaMerges);\n\n  // log date.now in a readable format\n  const originalDate = OriginalGlobalUtils.getOriginalDate();\n\n  return {\n    ...mockRequestData,\n    parentSpanId: \"\",\n    inputValueHash,\n    inputSchema,\n    inputSchemaHash,\n    outputValue: undefined,\n    outputSchema: undefined,\n    outputSchemaHash: \"\",\n    outputValueHash: \"\",\n    timestamp: {\n      seconds: Math.floor(originalDate.getTime() / 1000),\n      nanos: (originalDate.getTime() % 1000) * 1000000,\n    },\n    duration: {\n      seconds: 0,\n      nanos: 0,\n    },\n    isRootSpan: false,\n    isPreAppStart: !tuskDrift.isAppReady(),\n    metadata: undefined,\n    status: {\n      code: StatusCode.OK,\n      message: \"OK\",\n    },\n    stackTrace: mockRequestData.stackTrace,\n  };\n}\n\n/**\n * Utility function to find mock responses for replay mode across all instrumentations.\n * This centralizes the common logic of:\n * 1. Getting the replay trace ID from context\n * 2. Making the mock request to TuskDrift\n * 3. Handling the response and error cases\n *\n * @param outboundSpan - The outbound span to find a mock response for\n * @param tuskDrift - The TuskDrift instance to make the mock request\n * @param inputValueSchemaOverrides - The schema overrides for the input value\n * @returns Promise<MockResponse | null> - The mock response or null if not found\n */\nexport async function findMockResponseAsync({\n  mockRequestData,\n  tuskDrift,\n  inputValueSchemaMerges,\n}: {\n  mockRequestData: MockRequestData;\n  tuskDrift: TuskDriftCore;\n  inputValueSchemaMerges?: SchemaMerges;\n}): Promise<MockResponse | null> {\n  const outboundSpan = convertMockRequestDataToCleanSpanData(\n    mockRequestData,\n    tuskDrift,\n    inputValueSchemaMerges,\n  );\n  try {\n    // Get replay trace ID from context\n    const replayTraceId = SpanUtils.getCurrentReplayTraceId();\n\n    logger.debug(`Finding ${outboundSpan.traceId} mock for replay trace ID: ${replayTraceId}`);\n\n    const mockResponse = await tuskDrift.requestMockAsync({\n      outboundSpan,\n      // We could have no replay trace ID if we are finding outbound mocks for calls made before the app started\n      testId: replayTraceId || \"\",\n    });\n\n    if (!mockResponse || !mockResponse.found) {\n      logger.debug(\n        `No matching mock found for ${outboundSpan.traceId} with input value: ${JSON.stringify(\n          outboundSpan.inputValue,\n        )}`,\n        replayTraceId,\n      );\n      return null;\n    }\n\n    const responseBody = (mockResponse.response as any)?.response?.body;\n    logger.debug(`Found ${outboundSpan.traceId} mock response:`, responseBody, {\n      timestamp: (mockResponse.response as any)?.timestamp,\n    });\n\n    // Track the latest timestamp for this trace\n    if ((mockResponse.response as any)?.timestamp) {\n      DateTracker.updateLatestTimestamp(\n        replayTraceId || \"\",\n        (mockResponse.response as any).timestamp,\n      );\n    }\n\n    return {\n      result: responseBody,\n    };\n  } catch (error) {\n    logger.error(`Error finding ${outboundSpan.traceId} mock response:`, error);\n    return null;\n  }\n}\n\nexport function findMockResponseSync({\n  mockRequestData,\n  tuskDrift,\n  inputValueSchemaMerges,\n}: {\n  mockRequestData: MockRequestData;\n  tuskDrift: TuskDriftCore;\n  inputValueSchemaMerges?: SchemaMerges;\n}): MockResponse | null {\n  const outboundSpan = convertMockRequestDataToCleanSpanData(\n    mockRequestData,\n    tuskDrift,\n    inputValueSchemaMerges,\n  );\n  try {\n    // Get replay trace ID from context\n    const replayTraceId = SpanUtils.getCurrentReplayTraceId();\n\n    logger.debug(`Finding ${outboundSpan.traceId} mock for replay trace ID: ${replayTraceId}`);\n\n    const mockResponse = tuskDrift.requestMockSync({\n      outboundSpan,\n      testId: replayTraceId || \"\",\n    });\n\n    if (!mockResponse || !mockResponse.found) {\n      logger.debug(\n        `No matching mock found for ${outboundSpan.traceId} with input value: ${JSON.stringify(\n          outboundSpan.inputValue,\n        )}`,\n        replayTraceId,\n      );\n      return null;\n    }\n\n    const responseBody = (mockResponse.response as any)?.response?.body;\n    logger.debug(`Found ${outboundSpan.traceId} mock response and timestamp:`, responseBody, {\n      timestamp: (mockResponse.response as any)?.timestamp,\n    });\n\n    // Track the latest timestamp for this trace\n    if ((mockResponse.response as any)?.timestamp) {\n      DateTracker.updateLatestTimestamp(\n        replayTraceId || \"\",\n        (mockResponse.response as any).timestamp,\n      );\n    }\n\n    return {\n      result: responseBody,\n    };\n  } catch (error) {\n    logger.error(`Error finding ${outboundSpan.traceId} mock response:`, error);\n    return null;\n  }\n}\n","import { EventEmitter } from \"events\";\nimport { IncomingMessage } from \"http\";\nimport { TdHttpMockSocket, TdHttpMockSocketOptions } from \"./TdHttpMockSocket\";\nimport { SpanInfo } from \"../../../../core/tracing/SpanUtils\";\nimport { getDecodedType, httpBodyEncoder, normalizeHeaders } from \"../utils\";\nimport { HttpClientInputValue, HttpClientOutputValue } from \"../types\";\nimport { TuskDriftCore } from \"../../../../core/TuskDrift\";\nimport { createMockInputValue } from \"../../../../core/utils\";\nimport { findMockResponseAsync } from \"../../../core/utils/mockResponseUtils\";\nimport { SpanKind } from \"@opentelemetry/api\";\n\n// Lazy-loaded to avoid loading http module at import time\nlet ClientRequest: any;\nimport { PackageType } from \"@use-tusk/drift-schemas/core/span\";\nimport { EncodingType } from \"../../../../core/tracing/JsonSchemaHelper\";\nimport { logger } from \"../../../../core/utils/logger\";\n\nexport interface TdMockClientRequestOptions extends TdHttpMockSocketOptions {\n  method?: string;\n  path?: string;\n  headers?: Record<string, any>;\n  timeout?: number;\n  auth?: string;\n  agent?: any;\n  protocol?: \"http\" | \"https\";\n  hostname?: string;\n  port?: number;\n}\n\n/**\n * Mock ClientRequest implementation for Tusk Drift HTTP replay\n */\nexport class TdMockClientRequest extends EventEmitter {\n  private readonly INSTRUMENTATION_NAME = \"HttpInstrumentation\";\n  public options: TdMockClientRequestOptions;\n  public socket: TdHttpMockSocket;\n  public connection: TdHttpMockSocket;\n  public response: IncomingMessage;\n  public res?: IncomingMessage;\n  public path?: string;\n  public method?: string;\n  public finished: boolean = false;\n  private tuskDrift: TuskDriftCore;\n  private spanInfo?: SpanInfo;\n  private stackTrace?: string;\n\n  private requestBodyBuffers: Buffer[] = [];\n  private playbackStarted: boolean = false;\n  private readyToStartPlaybackOnSocketEvent: boolean = false;\n  private headers: Record<string, any> = {};\n\n  constructor(\n    options: TdMockClientRequestOptions,\n    spanInfo?: SpanInfo,\n    callback?: (res: IncomingMessage) => void,\n    stackTrace?: string,\n  ) {\n    super();\n    TdMockClientRequest._setupPrototype();\n    this.tuskDrift = TuskDriftCore.getInstance();\n\n    this.spanInfo = spanInfo;\n    this.stackTrace = stackTrace;\n\n    if (!options || Object.keys(options).length === 0) {\n      throw new Error(\n        \"Making a request with empty `options` is not supported in TdMockClientRequest\",\n      );\n    }\n\n    this.options = {\n      ...options,\n      headers: normalizeHeaders(options.headers || {}),\n    };\n\n    // Set up callback\n    if (callback) {\n      this.once(\"response\", callback);\n    }\n\n    // Create mock socket\n    this.socket = new TdHttpMockSocket({\n      protocol: options.protocol || \"http\",\n      family: options.family || 4,\n      port: options.port || 80,\n      hostname: options.hostname || \"localhost\",\n    });\n\n    // Set timeout if specified\n    const timeout = options.timeout || options.agent?.options?.timeout;\n    if (timeout) {\n      this.socket.setTimeout(timeout);\n    }\n\n    // Create response object\n    this.response = new IncomingMessage(this.socket as any);\n    this.connection = this.socket;\n\n    this.attachRequest();\n\n    // Connect socket asynchronously\n    process.nextTick(async () => {\n      await this.connectSocket();\n    });\n  }\n\n  private attachRequest(): void {\n    const { options } = this;\n\n    // Set headers\n    for (const [name, value] of Object.entries(options.headers || {})) {\n      // Convert array values to string (take first value if array)\n      // const headerValue = Array.isArray(value) ? value[0] : value;\n      this.setHeader(name.toLowerCase(), value);\n    }\n\n    // Set auth header if provided\n    if (options.auth && !options.headers?.authorization) {\n      this.setHeader(\"authorization\", `Basic ${Buffer.from(options.auth).toString(\"base64\")}`);\n    }\n\n    // Set request properties\n    this.path = options.path || \"/\";\n    this.method = options.method || \"GET\";\n\n    // Handle 100-continue\n    if (options.headers?.expect === \"100-continue\") {\n      setImmediate(() => {\n        this.emit(\"continue\");\n      });\n    }\n  }\n\n  private async connectSocket(): Promise<void> {\n    if (this.isDestroyed()) {\n      return;\n    }\n\n    this.connection = this.socket;\n\n    // Propagate events\n    this.propagateEvents([\"error\", \"timeout\"], this.socket, this);\n\n    this.socket.on(\"close\", () => {\n      this.socketOnClose();\n    });\n\n    this.socket.connecting = false;\n    this.emit(\"socket\", this.socket);\n    this.socket.emit(\"connect\");\n\n    if (this.socket.authorized) {\n      this.socket.emit(\"secureConnect\");\n    }\n\n    if (this.readyToStartPlaybackOnSocketEvent) {\n      await this.maybeStartPlayback();\n    }\n  }\n\n  private propagateEvents(events: string[], source: EventEmitter, target: EventEmitter): void {\n    for (const event of events) {\n      source.on(event, (...args) => target.emit(event, ...args));\n    }\n  }\n\n  private socketOnClose(): void {\n    if (!(this.res || this.socket._hadError)) {\n      this.socket._hadError = true;\n      const err = new Error(\"socket hang up\") as any;\n      err.code = \"ECONNRESET\";\n      this.emit(\"error\", err);\n    }\n    this.emit(\"close\");\n  }\n\n  private async maybeStartPlayback(): Promise<void> {\n    if (this.socket.connecting) {\n      this.readyToStartPlaybackOnSocketEvent = true;\n      return;\n    }\n\n    if (!(this.isDestroyed() || this.playbackStarted)) {\n      await this.startPlayback();\n    }\n  }\n\n  private isDestroyed(): boolean {\n    return (this as any).destroyed || this.socket.destroyed;\n  }\n\n  public write(chunk?: any, encoding?: any, callback?: any): boolean {\n    if (this.finished) {\n      const err = new Error(\"write after end\") as any;\n      err.code = \"ERR_STREAM_WRITE_AFTER_END\";\n      process.nextTick(() => this.emit(\"error\", err));\n      return true;\n    }\n\n    if (this.socket?.destroyed) {\n      return false;\n    }\n\n    if (!chunk) {\n      return true;\n    }\n\n    if (!Buffer.isBuffer(chunk)) {\n      chunk = Buffer.from(chunk, encoding);\n    }\n\n    this.requestBodyBuffers.push(chunk);\n\n    // Handle callback\n    const cb = typeof encoding === \"function\" ? encoding : callback;\n    if (typeof cb === \"function\") {\n      cb();\n    }\n\n    setImmediate(() => {\n      this.emit(\"drain\");\n    });\n\n    return false;\n  }\n\n  public end(chunk?: any, encoding?: any, callback?: any): this {\n    // Prevent multiple calls to end()\n    if (this.finished) {\n      return this;\n    }\n\n    let cb = callback;\n    if (typeof chunk === \"function\") {\n      cb = chunk;\n      chunk = null;\n    } else if (typeof encoding === \"function\") {\n      cb = encoding;\n      encoding = null;\n    }\n\n    if (typeof cb === \"function\") {\n      this.once(\"finish\", cb);\n    }\n\n    if (chunk) {\n      this.write(chunk, encoding);\n    }\n\n    this.finished = true;\n\n    process.nextTick(async () => {\n      await this.maybeStartPlayback();\n    });\n\n    return this;\n  }\n\n  public flushHeaders(): void {\n    process.nextTick(async () => {\n      await this.maybeStartPlayback();\n    });\n  }\n\n  private async startPlayback(): Promise<void> {\n    this.playbackStarted = true;\n\n    try {\n      // For background requests (no traceId), skip mock fetching and return 200 OK immediately\n      if (!this.spanInfo) {\n        logger.debug(\n          `[TdMockClientRequest] Background request detected (no spanInfo), returning 200 OK without mock lookup`,\n        );\n\n        const emptyResponse: HttpClientOutputValue = {\n          statusCode: 200,\n          statusMessage: \"OK\",\n          headers: {},\n          httpVersion: \"1.1\",\n          httpVersionMajor: 1,\n          httpVersionMinor: 1,\n          complete: true,\n          readable: false,\n        };\n\n        this.emit(\"finish\");\n\n        // Play the empty response\n        process.nextTick(() => {\n          this.playResponse(emptyResponse);\n        });\n        return;\n      }\n\n      // Build input value for matching\n      const rawInputValue: HttpClientInputValue = {\n        method: this.method || \"GET\",\n        path: this.path,\n        headers: this.headers,\n        protocol: this.options.protocol || \"http\",\n        hostname: this.options.hostname,\n        port: this.options.port || undefined,\n        timeout: this.options.timeout || undefined,\n      };\n\n      if (this.requestBodyBuffers.length > 0) {\n        const bodyBuffer = Buffer.concat(\n          this.requestBodyBuffers.map((chunk) =>\n            Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk),\n          ),\n        );\n\n        const encodedBody = await httpBodyEncoder({\n          bodyBuffer,\n        });\n\n        rawInputValue.body = encodedBody;\n        rawInputValue.bodySize = bodyBuffer.length;\n      }\n\n      const inputValue = createMockInputValue(rawInputValue);\n      const mockData = await findMockResponseAsync({\n        mockRequestData: {\n          traceId: this.spanInfo.traceId,\n          spanId: this.spanInfo.spanId,\n          name:\n            rawInputValue.path || `${rawInputValue.protocol.toUpperCase()} ${rawInputValue.method}`,\n          packageName: rawInputValue.protocol,\n          packageType: PackageType.HTTP,\n          instrumentationName: this.INSTRUMENTATION_NAME,\n          submoduleName: rawInputValue.method,\n          inputValue,\n          kind: SpanKind.CLIENT,\n          stackTrace: this.stackTrace,\n        },\n        tuskDrift: this.tuskDrift,\n        inputValueSchemaMerges: {\n          body: {\n            encoding: EncodingType.BASE64,\n            decodedType: getDecodedType(\n              (rawInputValue.headers[\"content-type\"] as string | string[]) || \"\",\n            ),\n          },\n          headers: {\n            matchImportance: 0,\n          },\n        },\n      });\n      if (!mockData) {\n        logger.warn(`[TdMockClientRequest] No mock data found for ${this.method} ${this.path}`);\n        throw new Error(\n          `[TdMockClientRequest] No matching mock found for ${this.method} ${this.path}`,\n        );\n      }\n\n      this.emit(\"finish\");\n\n      // Play the response\n      process.nextTick(() => {\n        // This type is used in _handleOutboundRequestInSpan when storing output value while recording\n        this.playResponse(mockData.result as HttpClientOutputValue);\n      });\n    } catch (error) {\n      logger.error(\"[TdMockClientRequest] Error during playback:\", error);\n      this.emit(\"error\", error);\n    }\n  }\n\n  private playResponse(mockDataResult: HttpClientOutputValue): void {\n    logger.debug(`[TdMockClientRequest] Playing HTTP mock response:`, mockDataResult);\n    try {\n      // Check if this is an error response that should emit an error event\n      if (mockDataResult.errorName) {\n        logger.debug(`[TdMockClientRequest] Detected error response, emitting error event`);\n\n        // Create the appropriate error object\n        const error = new Error(mockDataResult.errorMessage);\n\n        // For connection errors, emit error immediately\n        process.nextTick(() => {\n          this.emit(\"error\", error);\n        });\n        return;\n      }\n\n      // Set up response properties\n      this.response.statusCode = mockDataResult.statusCode || 200;\n      this.response.statusMessage = mockDataResult.statusMessage || \"OK\";\n\n      // Set headers - normalize to lowercase for consistent handling\n      const headers = normalizeHeaders(mockDataResult.headers || {});\n      const filteredHeaders = { ...headers };\n\n      // Remove compression headers since we provide uncompressed data\n      const compressionHeaders = Object.keys(filteredHeaders).filter((key) =>\n        key.toLowerCase().includes(\"content-encoding\"),\n      );\n      compressionHeaders.forEach((header) => {\n        delete filteredHeaders[header];\n      });\n\n      this.response.headers = filteredHeaders;\n      this.response.rawHeaders = [];\n\n      // Convert headers to rawHeaders format\n      for (const [key, value] of Object.entries(filteredHeaders)) {\n        this.response.rawHeaders.push(key, String(value));\n      }\n\n      // Set HTTP version properties\n      this.response.httpVersion = mockDataResult.httpVersion || \"1.1\";\n      this.response.httpVersionMajor = mockDataResult.httpVersionMajor || 1;\n      this.response.httpVersionMinor = mockDataResult.httpVersionMinor || 1;\n      this.response.complete = false;\n      this.response.readable = true;\n\n      // Set up response methods\n      (this.response as any).getHeader = (name: string) => {\n        return this.response.headers?.[name.toLowerCase()];\n      };\n\n      (this.response as any).getHeaders = () => {\n        return this.response.headers || {};\n      };\n\n      (this.response as any).hasHeader = (name: string) => {\n        return Boolean(this.response.headers?.[name.toLowerCase()]);\n      };\n\n      this.res = this.response;\n      (this.response as any).req = this;\n\n      // Emit response event\n      this.emit(\"response\", this.response);\n\n      // Handle response body\n      process.nextTick(async () => {\n        await this.emitResponseBody(mockDataResult);\n      });\n    } catch (error) {\n      logger.error(\"[TdMockClientRequest] Error playing response:\", error);\n      this.emit(\"error\", error);\n    }\n  }\n\n  private async emitResponseBody(outputValue: HttpClientOutputValue): Promise<void> {\n    if (!outputValue.body) {\n      // No body data\n      this.response.push(null);\n      this.response.complete = true;\n      this.response.readable = false;\n      return;\n    }\n\n    try {\n      const bodyBuffer = Buffer.from(outputValue.body, \"base64\");\n\n      // Push data to response stream\n      this.response.push(bodyBuffer);\n    } catch (error) {\n      logger.error(\"[TdMockClientRequest] Error processing response body:\", error);\n      this.response.push(null);\n    }\n\n    // Signal end of response\n    this.response.push(null);\n    this.response.complete = true;\n    this.response.readable = false;\n  }\n\n  public setHeader(name: string, value: any): void {\n    this.headers[name.toLowerCase()] = value;\n  }\n\n  public getHeader(name: string): any {\n    return this.headers[name.toLowerCase()];\n  }\n\n  public removeHeader(name: string): void {\n    delete this.headers[name.toLowerCase()];\n  }\n\n  public getHeaders(): Record<string, any> {\n    return { ...this.headers };\n  }\n\n  public abort(): void {\n    logger.debug(\"[TdMockClientRequest] Request aborted\");\n    this.emit(\"abort\");\n    this.socket.destroy();\n  }\n\n  public setTimeout(timeout: number, callback?: () => void): this {\n    if (callback) {\n      this.once(\"timeout\", callback);\n    }\n    return this;\n  }\n\n  public destroy(error?: Error): this {\n    logger.debug(\"[TdMockClientRequest] Request destroyed\", error);\n    if (error) {\n      this.emit(\"error\", error);\n    }\n    this.emit(\"close\");\n    this.socket.destroy();\n    return this;\n  }\n\n  // Set up prototype chain to extend ClientRequest\n  private static _setupPrototype() {\n    if (!ClientRequest) {\n      ClientRequest = require(\"http\").ClientRequest;\n      Object.setPrototypeOf(TdMockClientRequest.prototype, ClientRequest.prototype);\n    }\n  }\n\n  // Call this before creating instances\n  static initialize() {\n    TdMockClientRequest._setupPrototype();\n  }\n}\n","import { SpanInfo } from \"../../../core/tracing/SpanUtils\";\nimport { TdMockClientRequest, TdMockClientRequestOptions } from \"./mocks/TdMockClientRequest\";\nimport type { RequestOptions } from \"http\";\nimport { logger } from \"../../../core/utils/logger\";\n\n/**\n * HTTP Replay Hooks - Clean separation of replay logic from instrumentation\n */\nexport class HttpReplayHooks {\n  /**\n   * Extract trace ID from request headers\n   */\n  extractTraceIdFromHeaders(req: any): string | null {\n    const traceIdHeader = req.headers[\"x-td-trace-id\"] || req.headers[\"X-TD-TRACE-ID\"];\n    return traceIdHeader ? String(traceIdHeader) : null;\n  }\n\n  /**\n   * Check if we should fetch env vars from CLI\n   */\n  extractShouldFetchEnvVars(req: any): boolean {\n    const fetchHeader = req.headers[\"x-td-fetch-env-vars\"] || req.headers[\"X-TD-FETCH-ENV-VARS\"];\n    return fetchHeader === \"true\" || fetchHeader === true;\n  }\n\n  /**\n   * Handle outbound HTTP requests in replay mode\n   * Uses TdMockClientRequest for simplified mocking approach\n   */\n  handleOutboundReplayRequest({\n    method,\n    requestOptions,\n    protocol,\n    args,\n    spanInfo,\n    stackTrace,\n  }: {\n    method: string;\n    requestOptions: RequestOptions;\n    protocol: \"http\" | \"https\";\n    args: any[];\n    spanInfo?: SpanInfo;\n    stackTrace?: string;\n  }): TdMockClientRequest | undefined {\n    logger.debug(\n      `[HttpReplayHooks] Handling outbound ${protocol.toUpperCase()} ${method} request in replay mode`,\n    );\n\n    // Extract callback from args if present\n    let callback: ((res: any) => void) | undefined;\n    if (args.length > 1 && typeof args[1] === \"function\") {\n      callback = args[1];\n    } else if (args.length > 2 && typeof args[2] === \"function\") {\n      callback = args[2];\n    }\n\n    logger.debug(\"[HttpReplayHooks] Creating TdMockClientRequest for replay\");\n\n    // Prepare options for mock client request\n    const mockOptions: TdMockClientRequestOptions = {\n      path: requestOptions.path || undefined,\n      headers: requestOptions.headers || {},\n      timeout: requestOptions.timeout || undefined,\n      auth: requestOptions.auth || undefined,\n      agent: requestOptions.agent || undefined,\n      protocol,\n      hostname: requestOptions.hostname || requestOptions.host || undefined,\n      port: requestOptions.port ? Number(requestOptions.port) : undefined,\n      method,\n    };\n\n    // Create and return the mock client request\n    const mockRequest = new TdMockClientRequest(mockOptions, spanInfo, callback, stackTrace);\n\n    // For GET/HEAD requests, automatically call .end() to match native http.get() behavior\n    // Native http.get() and https.get() are convenience methods that automatically call .end()\n    if (method === \"GET\" || method === \"HEAD\") {\n      // Schedule .end() call after constructor completes\n      process.nextTick(() => {\n        mockRequest.end();\n      });\n    }\n\n    return mockRequest;\n  }\n}\n","import { SpanKind } from \"@opentelemetry/api\";\nimport { SpanUtils } from \"../../../core/tracing/SpanUtils\";\nimport { TuskDriftCore } from \"../../../core/TuskDrift\";\nimport { logger } from \"../../../core/utils/logger\";\n\nexport type OriginalFunctionCall<T> = () => T;\nexport type RecordModeHandler<T> = ({ isPreAppStart }: { isPreAppStart: boolean }) => T;\nexport type ReplayModeHandler<T> = () => T;\n\n/**\n * Utility function that abstracts the common record mode pattern of checking for current span context\n * and deciding whether to execute record mode logic or just call the original function.\n *\n * @param originalFunctionCall - Function that calls the original function when no span context exists\n * @param recordModeHandler - Function that handles the record mode logic when span context exists\n * @param spanKind - The kind of span being created\n * @returns The result from either originalFunctionCall or recordModeHandler\n */\nexport function handleRecordMode<T>({\n  originalFunctionCall,\n  recordModeHandler,\n  spanKind,\n}: {\n  originalFunctionCall: OriginalFunctionCall<T>;\n  recordModeHandler: RecordModeHandler<T>;\n  spanKind: SpanKind;\n}): T {\n  let isAppReady = false;\n  let currentSpanInfo = null;\n  try {\n    isAppReady = TuskDriftCore.getInstance().isAppReady();\n    currentSpanInfo = SpanUtils.getCurrentSpanInfo();\n  } catch (error) {\n    logger.error(`ModeUtils error checking app readiness or getting current span info:`, error);\n    return originalFunctionCall();\n  }\n\n  if (!isAppReady) {\n    // If app is not ready, call recordModeHandler with beforeAppStart=true\n    return recordModeHandler({ isPreAppStart: true });\n  }\n\n  if ((!currentSpanInfo && spanKind !== SpanKind.SERVER) || currentSpanInfo?.isPreAppStart) {\n    // If there is no current span info meaning this request isn't attached to a span (not part of an inbound request) AND isn't a server request\n    // OR the current span was created before the app started. No need to keep recording these requests\n    return originalFunctionCall();\n  } else {\n    // App is ready and we have span context, call recordModeHandler with beforeAppStart=false\n    return recordModeHandler({ isPreAppStart: false });\n  }\n}\n\n/**\n * Utility function that abstracts the common replay mode pattern of checking if the app is ready\n *\n * If this is a background request (app is ready and no parent span), calls the backgroundRequestHandler.\n * Otherwise, calls the replayModeHandler.\n * @param replayModeHandler - Function that handles the replay mode logic when app is ready\n * @param noOpRequestHandler - Function to handle no-op requests, called for background requests\n * @returns The result from either noOpRequestHandler or replayModeHandler\n */\nexport function handleReplayMode<T>({\n  replayModeHandler,\n  noOpRequestHandler,\n  isServerRequest,\n}: {\n  replayModeHandler: ReplayModeHandler<T>;\n  noOpRequestHandler: () => T;\n  isServerRequest: boolean;\n}): T {\n  const isAppReady = TuskDriftCore.getInstance().isAppReady();\n  const currentSpanInfo = SpanUtils.getCurrentSpanInfo();\n\n  // Background request: App is ready + not within a trace (no parent span) + not a server request\n  if (isAppReady && !currentSpanInfo && !isServerRequest) {\n    logger.debug(`[ModeUtils] Handling no-op request`);\n    // This is a background request (app is ready and no parent span), call the backgroundRequestHandler\n    return noOpRequestHandler();\n  }\n\n  return replayModeHandler();\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.readServiceOption = exports.readMethodOption = exports.readMethodOptions = exports.normalizeMethodInfo = void 0;\nconst runtime_1 = require(\"@protobuf-ts/runtime\");\n/**\n * Turns PartialMethodInfo into MethodInfo.\n */\nfunction normalizeMethodInfo(method, service) {\n    var _a, _b, _c;\n    let m = method;\n    m.service = service;\n    m.localName = (_a = m.localName) !== null && _a !== void 0 ? _a : runtime_1.lowerCamelCase(m.name);\n    // noinspection PointlessBooleanExpressionJS\n    m.serverStreaming = !!m.serverStreaming;\n    // noinspection PointlessBooleanExpressionJS\n    m.clientStreaming = !!m.clientStreaming;\n    m.options = (_b = m.options) !== null && _b !== void 0 ? _b : {};\n    m.idempotency = (_c = m.idempotency) !== null && _c !== void 0 ? _c : undefined;\n    return m;\n}\nexports.normalizeMethodInfo = normalizeMethodInfo;\n/**\n * Read custom method options from a generated service client.\n *\n * @deprecated use readMethodOption()\n */\nfunction readMethodOptions(service, methodName, extensionName, extensionType) {\n    var _a;\n    const options = (_a = service.methods.find((m, i) => m.localName === methodName || i === methodName)) === null || _a === void 0 ? void 0 : _a.options;\n    return options && options[extensionName] ? extensionType.fromJson(options[extensionName]) : undefined;\n}\nexports.readMethodOptions = readMethodOptions;\nfunction readMethodOption(service, methodName, extensionName, extensionType) {\n    var _a;\n    const options = (_a = service.methods.find((m, i) => m.localName === methodName || i === methodName)) === null || _a === void 0 ? void 0 : _a.options;\n    if (!options) {\n        return undefined;\n    }\n    const optionVal = options[extensionName];\n    if (optionVal === undefined) {\n        return optionVal;\n    }\n    return extensionType ? extensionType.fromJson(optionVal) : optionVal;\n}\nexports.readMethodOption = readMethodOption;\nfunction readServiceOption(service, extensionName, extensionType) {\n    const options = service.options;\n    if (!options) {\n        return undefined;\n    }\n    const optionVal = options[extensionName];\n    if (optionVal === undefined) {\n        return optionVal;\n    }\n    return extensionType ? extensionType.fromJson(optionVal) : optionVal;\n}\nexports.readServiceOption = readServiceOption;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ServiceType = void 0;\nconst reflection_info_1 = require(\"./reflection-info\");\nclass ServiceType {\n    constructor(typeName, methods, options) {\n        this.typeName = typeName;\n        this.methods = methods.map(i => reflection_info_1.normalizeMethodInfo(i, this));\n        this.options = options !== null && options !== void 0 ? options : {};\n    }\n}\nexports.ServiceType = ServiceType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RpcError = void 0;\n/**\n * An error that occurred while calling a RPC method.\n */\nclass RpcError extends Error {\n    constructor(message, code = 'UNKNOWN', meta) {\n        super(message);\n        this.name = 'RpcError';\n        // see https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#example\n        Object.setPrototypeOf(this, new.target.prototype);\n        this.code = code;\n        this.meta = meta !== null && meta !== void 0 ? meta : {};\n    }\n    toString() {\n        const l = [this.name + ': ' + this.message];\n        if (this.code) {\n            l.push('');\n            l.push('Code: ' + this.code);\n        }\n        if (this.serviceName && this.methodName) {\n            l.push('Method: ' + this.serviceName + '/' + this.methodName);\n        }\n        let m = Object.entries(this.meta);\n        if (m.length) {\n            l.push('');\n            l.push('Meta:');\n            for (let [k, v] of m) {\n                l.push(`  ${k}: ${v}`);\n            }\n        }\n        return l.join('\\n');\n    }\n}\nexports.RpcError = RpcError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeRpcOptions = void 0;\nconst runtime_1 = require(\"@protobuf-ts/runtime\");\n/**\n * Merges custom RPC options with defaults. Returns a new instance and keeps\n * the \"defaults\" and the \"options\" unmodified.\n *\n * Merges `RpcMetadata` \"meta\", overwriting values from \"defaults\" with\n * values from \"options\". Does not append values to existing entries.\n *\n * Merges \"jsonOptions\", including \"jsonOptions.typeRegistry\", by creating\n * a new array that contains types from \"options.jsonOptions.typeRegistry\"\n * first, then types from \"defaults.jsonOptions.typeRegistry\".\n *\n * Merges \"binaryOptions\".\n *\n * Merges \"interceptors\" by creating a new array that contains interceptors\n * from \"defaults\" first, then interceptors from \"options\".\n *\n * Works with objects that extend `RpcOptions`, but only if the added\n * properties are of type Date, primitive like string, boolean, or Array\n * of primitives. If you have other property types, you have to merge them\n * yourself.\n */\nfunction mergeRpcOptions(defaults, options) {\n    if (!options)\n        return defaults;\n    let o = {};\n    copy(defaults, o);\n    copy(options, o);\n    for (let key of Object.keys(options)) {\n        let val = options[key];\n        switch (key) {\n            case \"jsonOptions\":\n                o.jsonOptions = runtime_1.mergeJsonOptions(defaults.jsonOptions, o.jsonOptions);\n                break;\n            case \"binaryOptions\":\n                o.binaryOptions = runtime_1.mergeBinaryOptions(defaults.binaryOptions, o.binaryOptions);\n                break;\n            case \"meta\":\n                o.meta = {};\n                copy(defaults.meta, o.meta);\n                copy(options.meta, o.meta);\n                break;\n            case \"interceptors\":\n                o.interceptors = defaults.interceptors ? defaults.interceptors.concat(val) : val.concat();\n                break;\n        }\n    }\n    return o;\n}\nexports.mergeRpcOptions = mergeRpcOptions;\nfunction copy(a, into) {\n    if (!a)\n        return;\n    let c = into;\n    for (let [k, v] of Object.entries(a)) {\n        if (v instanceof Date)\n            c[k] = new Date(v.getTime());\n        else if (Array.isArray(v))\n            c[k] = v.concat();\n        else\n            c[k] = v;\n    }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Deferred = exports.DeferredState = void 0;\nvar DeferredState;\n(function (DeferredState) {\n    DeferredState[DeferredState[\"PENDING\"] = 0] = \"PENDING\";\n    DeferredState[DeferredState[\"REJECTED\"] = 1] = \"REJECTED\";\n    DeferredState[DeferredState[\"RESOLVED\"] = 2] = \"RESOLVED\";\n})(DeferredState = exports.DeferredState || (exports.DeferredState = {}));\n/**\n * A deferred promise. This is a \"controller\" for a promise, which lets you\n * pass a promise around and reject or resolve it from the outside.\n *\n * Warning: This class is to be used with care. Using it can make code very\n * difficult to read. It is intended for use in library code that exposes\n * promises, not for regular business logic.\n */\nclass Deferred {\n    /**\n     * @param preventUnhandledRejectionWarning - prevents the warning\n     * \"Unhandled Promise rejection\" by adding a noop rejection handler.\n     * Working with calls returned from the runtime-rpc package in an\n     * async function usually means awaiting one call property after\n     * the other. This means that the \"status\" is not being awaited when\n     * an earlier await for the \"headers\" is rejected. This causes the\n     * \"unhandled promise reject\" warning. A more correct behaviour for\n     * calls might be to become aware whether at least one of the\n     * promises is handled and swallow the rejection warning for the\n     * others.\n     */\n    constructor(preventUnhandledRejectionWarning = true) {\n        this._state = DeferredState.PENDING;\n        this._promise = new Promise((resolve, reject) => {\n            this._resolve = resolve;\n            this._reject = reject;\n        });\n        if (preventUnhandledRejectionWarning) {\n            this._promise.catch(_ => { });\n        }\n    }\n    /**\n     * Get the current state of the promise.\n     */\n    get state() {\n        return this._state;\n    }\n    /**\n     * Get the deferred promise.\n     */\n    get promise() {\n        return this._promise;\n    }\n    /**\n     * Resolve the promise. Throws if the promise is already resolved or rejected.\n     */\n    resolve(value) {\n        if (this.state !== DeferredState.PENDING)\n            throw new Error(`cannot resolve ${DeferredState[this.state].toLowerCase()}`);\n        this._resolve(value);\n        this._state = DeferredState.RESOLVED;\n    }\n    /**\n     * Reject the promise. Throws if the promise is already resolved or rejected.\n     */\n    reject(reason) {\n        if (this.state !== DeferredState.PENDING)\n            throw new Error(`cannot reject ${DeferredState[this.state].toLowerCase()}`);\n        this._reject(reason);\n        this._state = DeferredState.REJECTED;\n    }\n    /**\n     * Resolve the promise. Ignore if not pending.\n     */\n    resolvePending(val) {\n        if (this._state === DeferredState.PENDING)\n            this.resolve(val);\n    }\n    /**\n     * Reject the promise. Ignore if not pending.\n     */\n    rejectPending(reason) {\n        if (this._state === DeferredState.PENDING)\n            this.reject(reason);\n    }\n}\nexports.Deferred = Deferred;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RpcOutputStreamController = void 0;\nconst deferred_1 = require(\"./deferred\");\nconst runtime_1 = require(\"@protobuf-ts/runtime\");\n/**\n * A `RpcOutputStream` that you control.\n */\nclass RpcOutputStreamController {\n    constructor() {\n        this._lis = {\n            nxt: [],\n            msg: [],\n            err: [],\n            cmp: [],\n        };\n        this._closed = false;\n        // --- RpcOutputStream async iterator API\n        // iterator state.\n        // is undefined when no iterator has been acquired yet.\n        this._itState = { q: [] };\n    }\n    // --- RpcOutputStream callback API\n    onNext(callback) {\n        return this.addLis(callback, this._lis.nxt);\n    }\n    onMessage(callback) {\n        return this.addLis(callback, this._lis.msg);\n    }\n    onError(callback) {\n        return this.addLis(callback, this._lis.err);\n    }\n    onComplete(callback) {\n        return this.addLis(callback, this._lis.cmp);\n    }\n    addLis(callback, list) {\n        list.push(callback);\n        return () => {\n            let i = list.indexOf(callback);\n            if (i >= 0)\n                list.splice(i, 1);\n        };\n    }\n    // remove all listeners\n    clearLis() {\n        for (let l of Object.values(this._lis))\n            l.splice(0, l.length);\n    }\n    // --- Controller API\n    /**\n     * Is this stream already closed by a completion or error?\n     */\n    get closed() {\n        return this._closed !== false;\n    }\n    /**\n     * Emit message, close with error, or close successfully, but only one\n     * at a time.\n     * Can be used to wrap a stream by using the other stream's `onNext`.\n     */\n    notifyNext(message, error, complete) {\n        runtime_1.assert((message ? 1 : 0) + (error ? 1 : 0) + (complete ? 1 : 0) <= 1, 'only one emission at a time');\n        if (message)\n            this.notifyMessage(message);\n        if (error)\n            this.notifyError(error);\n        if (complete)\n            this.notifyComplete();\n    }\n    /**\n     * Emits a new message. Throws if stream is closed.\n     *\n     * Triggers onNext and onMessage callbacks.\n     */\n    notifyMessage(message) {\n        runtime_1.assert(!this.closed, 'stream is closed');\n        this.pushIt({ value: message, done: false });\n        this._lis.msg.forEach(l => l(message));\n        this._lis.nxt.forEach(l => l(message, undefined, false));\n    }\n    /**\n     * Closes the stream with an error. Throws if stream is closed.\n     *\n     * Triggers onNext and onError callbacks.\n     */\n    notifyError(error) {\n        runtime_1.assert(!this.closed, 'stream is closed');\n        this._closed = error;\n        this.pushIt(error);\n        this._lis.err.forEach(l => l(error));\n        this._lis.nxt.forEach(l => l(undefined, error, false));\n        this.clearLis();\n    }\n    /**\n     * Closes the stream successfully. Throws if stream is closed.\n     *\n     * Triggers onNext and onComplete callbacks.\n     */\n    notifyComplete() {\n        runtime_1.assert(!this.closed, 'stream is closed');\n        this._closed = true;\n        this.pushIt({ value: null, done: true });\n        this._lis.cmp.forEach(l => l());\n        this._lis.nxt.forEach(l => l(undefined, undefined, true));\n        this.clearLis();\n    }\n    /**\n     * Creates an async iterator (that can be used with `for await {...}`)\n     * to consume the stream.\n     *\n     * Some things to note:\n     * - If an error occurs, the `for await` will throw it.\n     * - If an error occurred before the `for await` was started, `for await`\n     *   will re-throw it.\n     * - If the stream is already complete, the `for await` will be empty.\n     * - If your `for await` consumes slower than the stream produces,\n     *   for example because you are relaying messages in a slow operation,\n     *   messages are queued.\n     */\n    [Symbol.asyncIterator]() {\n        // if we are closed, we are definitely not receiving any more messages.\n        // but we can't let the iterator get stuck. we want to either:\n        // a) finish the new iterator immediately, because we are completed\n        // b) reject the new iterator, because we errored\n        if (this._closed === true)\n            this.pushIt({ value: null, done: true });\n        else if (this._closed !== false)\n            this.pushIt(this._closed);\n        // the async iterator\n        return {\n            next: () => {\n                let state = this._itState;\n                runtime_1.assert(state, \"bad state\"); // if we don't have a state here, code is broken\n                // there should be no pending result.\n                // did the consumer call next() before we resolved our previous result promise?\n                runtime_1.assert(!state.p, \"iterator contract broken\");\n                // did we produce faster than the iterator consumed?\n                // return the oldest result from the queue.\n                let first = state.q.shift();\n                if (first)\n                    return (\"value\" in first) ? Promise.resolve(first) : Promise.reject(first);\n                // we have no result ATM, but we promise one.\n                // as soon as we have a result, we must resolve promise.\n                state.p = new deferred_1.Deferred();\n                return state.p.promise;\n            },\n        };\n    }\n    // \"push\" a new iterator result.\n    // this either resolves a pending promise, or enqueues the result.\n    pushIt(result) {\n        let state = this._itState;\n        // is the consumer waiting for us?\n        if (state.p) {\n            // yes, consumer is waiting for this promise.\n            const p = state.p;\n            runtime_1.assert(p.state == deferred_1.DeferredState.PENDING, \"iterator contract broken\");\n            // resolve the promise\n            (\"value\" in result) ? p.resolve(result) : p.reject(result);\n            // must cleanup, otherwise iterator.next() would pick it up again.\n            delete state.p;\n        }\n        else {\n            // we are producing faster than the iterator consumes.\n            // push result onto queue.\n            state.q.push(result);\n        }\n    }\n}\nexports.RpcOutputStreamController = RpcOutputStreamController;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UnaryCall = void 0;\n/**\n * A unary RPC call. Unary means there is exactly one input message and\n * exactly one output message unless an error occurred.\n */\nclass UnaryCall {\n    constructor(method, requestHeaders, request, headers, response, status, trailers) {\n        this.method = method;\n        this.requestHeaders = requestHeaders;\n        this.request = request;\n        this.headers = headers;\n        this.response = response;\n        this.status = status;\n        this.trailers = trailers;\n    }\n    /**\n     * If you are only interested in the final outcome of this call,\n     * you can await it to receive a `FinishedUnaryCall`.\n     */\n    then(onfulfilled, onrejected) {\n        return this.promiseFinished().then(value => onfulfilled ? Promise.resolve(onfulfilled(value)) : value, reason => onrejected ? Promise.resolve(onrejected(reason)) : Promise.reject(reason));\n    }\n    promiseFinished() {\n        return __awaiter(this, void 0, void 0, function* () {\n            let [headers, response, status, trailers] = yield Promise.all([this.headers, this.response, this.status, this.trailers]);\n            return {\n                method: this.method,\n                requestHeaders: this.requestHeaders,\n                request: this.request,\n                headers,\n                response,\n                status,\n                trailers\n            };\n        });\n    }\n}\nexports.UnaryCall = UnaryCall;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ServerStreamingCall = void 0;\n/**\n * A server streaming RPC call. The client provides exactly one input message\n * but the server may respond with 0, 1, or more messages.\n */\nclass ServerStreamingCall {\n    constructor(method, requestHeaders, request, headers, response, status, trailers) {\n        this.method = method;\n        this.requestHeaders = requestHeaders;\n        this.request = request;\n        this.headers = headers;\n        this.responses = response;\n        this.status = status;\n        this.trailers = trailers;\n    }\n    /**\n     * Instead of awaiting the response status and trailers, you can\n     * just as well await this call itself to receive the server outcome.\n     * You should first setup some listeners to the `request` to\n     * see the actual messages the server replied with.\n     */\n    then(onfulfilled, onrejected) {\n        return this.promiseFinished().then(value => onfulfilled ? Promise.resolve(onfulfilled(value)) : value, reason => onrejected ? Promise.resolve(onrejected(reason)) : Promise.reject(reason));\n    }\n    promiseFinished() {\n        return __awaiter(this, void 0, void 0, function* () {\n            let [headers, status, trailers] = yield Promise.all([this.headers, this.status, this.trailers]);\n            return {\n                method: this.method,\n                requestHeaders: this.requestHeaders,\n                request: this.request,\n                headers,\n                status,\n                trailers,\n            };\n        });\n    }\n}\nexports.ServerStreamingCall = ServerStreamingCall;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClientStreamingCall = void 0;\n/**\n * A client streaming RPC call. This means that the clients sends 0, 1, or\n * more messages to the server, and the server replies with exactly one\n * message.\n */\nclass ClientStreamingCall {\n    constructor(method, requestHeaders, request, headers, response, status, trailers) {\n        this.method = method;\n        this.requestHeaders = requestHeaders;\n        this.requests = request;\n        this.headers = headers;\n        this.response = response;\n        this.status = status;\n        this.trailers = trailers;\n    }\n    /**\n     * Instead of awaiting the response status and trailers, you can\n     * just as well await this call itself to receive the server outcome.\n     * Note that it may still be valid to send more request messages.\n     */\n    then(onfulfilled, onrejected) {\n        return this.promiseFinished().then(value => onfulfilled ? Promise.resolve(onfulfilled(value)) : value, reason => onrejected ? Promise.resolve(onrejected(reason)) : Promise.reject(reason));\n    }\n    promiseFinished() {\n        return __awaiter(this, void 0, void 0, function* () {\n            let [headers, response, status, trailers] = yield Promise.all([this.headers, this.response, this.status, this.trailers]);\n            return {\n                method: this.method,\n                requestHeaders: this.requestHeaders,\n                headers,\n                response,\n                status,\n                trailers\n            };\n        });\n    }\n}\nexports.ClientStreamingCall = ClientStreamingCall;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DuplexStreamingCall = void 0;\n/**\n * A duplex streaming RPC call. This means that the clients sends an\n * arbitrary amount of messages to the server, while at the same time,\n * the server sends an arbitrary amount of messages to the client.\n */\nclass DuplexStreamingCall {\n    constructor(method, requestHeaders, request, headers, response, status, trailers) {\n        this.method = method;\n        this.requestHeaders = requestHeaders;\n        this.requests = request;\n        this.headers = headers;\n        this.responses = response;\n        this.status = status;\n        this.trailers = trailers;\n    }\n    /**\n     * Instead of awaiting the response status and trailers, you can\n     * just as well await this call itself to receive the server outcome.\n     * Note that it may still be valid to send more request messages.\n     */\n    then(onfulfilled, onrejected) {\n        return this.promiseFinished().then(value => onfulfilled ? Promise.resolve(onfulfilled(value)) : value, reason => onrejected ? Promise.resolve(onrejected(reason)) : Promise.reject(reason));\n    }\n    promiseFinished() {\n        return __awaiter(this, void 0, void 0, function* () {\n            let [headers, status, trailers] = yield Promise.all([this.headers, this.status, this.trailers]);\n            return {\n                method: this.method,\n                requestHeaders: this.requestHeaders,\n                headers,\n                status,\n                trailers,\n            };\n        });\n    }\n}\nexports.DuplexStreamingCall = DuplexStreamingCall;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TestTransport = void 0;\nconst rpc_error_1 = require(\"./rpc-error\");\nconst runtime_1 = require(\"@protobuf-ts/runtime\");\nconst rpc_output_stream_1 = require(\"./rpc-output-stream\");\nconst rpc_options_1 = require(\"./rpc-options\");\nconst unary_call_1 = require(\"./unary-call\");\nconst server_streaming_call_1 = require(\"./server-streaming-call\");\nconst client_streaming_call_1 = require(\"./client-streaming-call\");\nconst duplex_streaming_call_1 = require(\"./duplex-streaming-call\");\n/**\n * Transport for testing.\n */\nclass TestTransport {\n    /**\n     * Initialize with mock data. Omitted fields have default value.\n     */\n    constructor(data) {\n        /**\n         * Suppress warning / error about uncaught rejections of\n         * \"status\" and \"trailers\".\n         */\n        this.suppressUncaughtRejections = true;\n        this.headerDelay = 10;\n        this.responseDelay = 50;\n        this.betweenResponseDelay = 10;\n        this.afterResponseDelay = 10;\n        this.data = data !== null && data !== void 0 ? data : {};\n    }\n    /**\n     * Sent message(s) during the last operation.\n     */\n    get sentMessages() {\n        if (this.lastInput instanceof TestInputStream) {\n            return this.lastInput.sent;\n        }\n        else if (typeof this.lastInput == \"object\") {\n            return [this.lastInput.single];\n        }\n        return [];\n    }\n    /**\n     * Sending message(s) completed?\n     */\n    get sendComplete() {\n        if (this.lastInput instanceof TestInputStream) {\n            return this.lastInput.completed;\n        }\n        else if (typeof this.lastInput == \"object\") {\n            return true;\n        }\n        return false;\n    }\n    // Creates a promise for response headers from the mock data.\n    promiseHeaders() {\n        var _a;\n        const headers = (_a = this.data.headers) !== null && _a !== void 0 ? _a : TestTransport.defaultHeaders;\n        return headers instanceof rpc_error_1.RpcError\n            ? Promise.reject(headers)\n            : Promise.resolve(headers);\n    }\n    // Creates a promise for a single, valid, message from the mock data.\n    promiseSingleResponse(method) {\n        if (this.data.response instanceof rpc_error_1.RpcError) {\n            return Promise.reject(this.data.response);\n        }\n        let r;\n        if (Array.isArray(this.data.response)) {\n            runtime_1.assert(this.data.response.length > 0);\n            r = this.data.response[0];\n        }\n        else if (this.data.response !== undefined) {\n            r = this.data.response;\n        }\n        else {\n            r = method.O.create();\n        }\n        runtime_1.assert(method.O.is(r));\n        return Promise.resolve(r);\n    }\n    /**\n     * Pushes response messages from the mock data to the output stream.\n     * If an error response, status or trailers are mocked, the stream is\n     * closed with the respective error.\n     * Otherwise, stream is completed successfully.\n     *\n     * The returned promise resolves when the stream is closed. It should\n     * not reject. If it does, code is broken.\n     */\n    streamResponses(method, stream, abort) {\n        return __awaiter(this, void 0, void 0, function* () {\n            // normalize \"data.response\" into an array of valid output messages\n            const messages = [];\n            if (this.data.response === undefined) {\n                messages.push(method.O.create());\n            }\n            else if (Array.isArray(this.data.response)) {\n                for (let msg of this.data.response) {\n                    runtime_1.assert(method.O.is(msg));\n                    messages.push(msg);\n                }\n            }\n            else if (!(this.data.response instanceof rpc_error_1.RpcError)) {\n                runtime_1.assert(method.O.is(this.data.response));\n                messages.push(this.data.response);\n            }\n            // start the stream with an initial delay.\n            // if the request is cancelled, notify() error and exit.\n            try {\n                yield delay(this.responseDelay, abort)(undefined);\n            }\n            catch (error) {\n                stream.notifyError(error);\n                return;\n            }\n            // if error response was mocked, notify() error (stream is now closed with error) and exit.\n            if (this.data.response instanceof rpc_error_1.RpcError) {\n                stream.notifyError(this.data.response);\n                return;\n            }\n            // regular response messages were mocked. notify() them.\n            for (let msg of messages) {\n                stream.notifyMessage(msg);\n                // add a short delay between responses\n                // if the request is cancelled, notify() error and exit.\n                try {\n                    yield delay(this.betweenResponseDelay, abort)(undefined);\n                }\n                catch (error) {\n                    stream.notifyError(error);\n                    return;\n                }\n            }\n            // error status was mocked, notify() error (stream is now closed with error) and exit.\n            if (this.data.status instanceof rpc_error_1.RpcError) {\n                stream.notifyError(this.data.status);\n                return;\n            }\n            // error trailers were mocked, notify() error (stream is now closed with error) and exit.\n            if (this.data.trailers instanceof rpc_error_1.RpcError) {\n                stream.notifyError(this.data.trailers);\n                return;\n            }\n            // stream completed successfully\n            stream.notifyComplete();\n        });\n    }\n    // Creates a promise for response status from the mock data.\n    promiseStatus() {\n        var _a;\n        const status = (_a = this.data.status) !== null && _a !== void 0 ? _a : TestTransport.defaultStatus;\n        return status instanceof rpc_error_1.RpcError\n            ? Promise.reject(status)\n            : Promise.resolve(status);\n    }\n    // Creates a promise for response trailers from the mock data.\n    promiseTrailers() {\n        var _a;\n        const trailers = (_a = this.data.trailers) !== null && _a !== void 0 ? _a : TestTransport.defaultTrailers;\n        return trailers instanceof rpc_error_1.RpcError\n            ? Promise.reject(trailers)\n            : Promise.resolve(trailers);\n    }\n    maybeSuppressUncaught(...promise) {\n        if (this.suppressUncaughtRejections) {\n            for (let p of promise) {\n                p.catch(() => {\n                });\n            }\n        }\n    }\n    mergeOptions(options) {\n        return rpc_options_1.mergeRpcOptions({}, options);\n    }\n    unary(method, input, options) {\n        var _a;\n        const requestHeaders = (_a = options.meta) !== null && _a !== void 0 ? _a : {}, headersPromise = this.promiseHeaders()\n            .then(delay(this.headerDelay, options.abort)), responsePromise = headersPromise\n            .catch(_ => {\n        })\n            .then(delay(this.responseDelay, options.abort))\n            .then(_ => this.promiseSingleResponse(method)), statusPromise = responsePromise\n            .catch(_ => {\n        })\n            .then(delay(this.afterResponseDelay, options.abort))\n            .then(_ => this.promiseStatus()), trailersPromise = responsePromise\n            .catch(_ => {\n        })\n            .then(delay(this.afterResponseDelay, options.abort))\n            .then(_ => this.promiseTrailers());\n        this.maybeSuppressUncaught(statusPromise, trailersPromise);\n        this.lastInput = { single: input };\n        return new unary_call_1.UnaryCall(method, requestHeaders, input, headersPromise, responsePromise, statusPromise, trailersPromise);\n    }\n    serverStreaming(method, input, options) {\n        var _a;\n        const requestHeaders = (_a = options.meta) !== null && _a !== void 0 ? _a : {}, headersPromise = this.promiseHeaders()\n            .then(delay(this.headerDelay, options.abort)), outputStream = new rpc_output_stream_1.RpcOutputStreamController(), responseStreamClosedPromise = headersPromise\n            .then(delay(this.responseDelay, options.abort))\n            .catch(() => {\n        })\n            .then(() => this.streamResponses(method, outputStream, options.abort))\n            .then(delay(this.afterResponseDelay, options.abort)), statusPromise = responseStreamClosedPromise\n            .then(() => this.promiseStatus()), trailersPromise = responseStreamClosedPromise\n            .then(() => this.promiseTrailers());\n        this.maybeSuppressUncaught(statusPromise, trailersPromise);\n        this.lastInput = { single: input };\n        return new server_streaming_call_1.ServerStreamingCall(method, requestHeaders, input, headersPromise, outputStream, statusPromise, trailersPromise);\n    }\n    clientStreaming(method, options) {\n        var _a;\n        const requestHeaders = (_a = options.meta) !== null && _a !== void 0 ? _a : {}, headersPromise = this.promiseHeaders()\n            .then(delay(this.headerDelay, options.abort)), responsePromise = headersPromise\n            .catch(_ => {\n        })\n            .then(delay(this.responseDelay, options.abort))\n            .then(_ => this.promiseSingleResponse(method)), statusPromise = responsePromise\n            .catch(_ => {\n        })\n            .then(delay(this.afterResponseDelay, options.abort))\n            .then(_ => this.promiseStatus()), trailersPromise = responsePromise\n            .catch(_ => {\n        })\n            .then(delay(this.afterResponseDelay, options.abort))\n            .then(_ => this.promiseTrailers());\n        this.maybeSuppressUncaught(statusPromise, trailersPromise);\n        this.lastInput = new TestInputStream(this.data, options.abort);\n        return new client_streaming_call_1.ClientStreamingCall(method, requestHeaders, this.lastInput, headersPromise, responsePromise, statusPromise, trailersPromise);\n    }\n    duplex(method, options) {\n        var _a;\n        const requestHeaders = (_a = options.meta) !== null && _a !== void 0 ? _a : {}, headersPromise = this.promiseHeaders()\n            .then(delay(this.headerDelay, options.abort)), outputStream = new rpc_output_stream_1.RpcOutputStreamController(), responseStreamClosedPromise = headersPromise\n            .then(delay(this.responseDelay, options.abort))\n            .catch(() => {\n        })\n            .then(() => this.streamResponses(method, outputStream, options.abort))\n            .then(delay(this.afterResponseDelay, options.abort)), statusPromise = responseStreamClosedPromise\n            .then(() => this.promiseStatus()), trailersPromise = responseStreamClosedPromise\n            .then(() => this.promiseTrailers());\n        this.maybeSuppressUncaught(statusPromise, trailersPromise);\n        this.lastInput = new TestInputStream(this.data, options.abort);\n        return new duplex_streaming_call_1.DuplexStreamingCall(method, requestHeaders, this.lastInput, headersPromise, outputStream, statusPromise, trailersPromise);\n    }\n}\nexports.TestTransport = TestTransport;\nTestTransport.defaultHeaders = {\n    responseHeader: \"test\"\n};\nTestTransport.defaultStatus = {\n    code: \"OK\", detail: \"all good\"\n};\nTestTransport.defaultTrailers = {\n    responseTrailer: \"test\"\n};\nfunction delay(ms, abort) {\n    return (v) => new Promise((resolve, reject) => {\n        if (abort === null || abort === void 0 ? void 0 : abort.aborted) {\n            reject(new rpc_error_1.RpcError(\"user cancel\", \"CANCELLED\"));\n        }\n        else {\n            const id = setTimeout(() => resolve(v), ms);\n            if (abort) {\n                abort.addEventListener(\"abort\", ev => {\n                    clearTimeout(id);\n                    reject(new rpc_error_1.RpcError(\"user cancel\", \"CANCELLED\"));\n                });\n            }\n        }\n    });\n}\nclass TestInputStream {\n    constructor(data, abort) {\n        this._completed = false;\n        this._sent = [];\n        this.data = data;\n        this.abort = abort;\n    }\n    get sent() {\n        return this._sent;\n    }\n    get completed() {\n        return this._completed;\n    }\n    send(message) {\n        if (this.data.inputMessage instanceof rpc_error_1.RpcError) {\n            return Promise.reject(this.data.inputMessage);\n        }\n        const delayMs = this.data.inputMessage === undefined\n            ? 10\n            : this.data.inputMessage;\n        return Promise.resolve(undefined)\n            .then(() => {\n            this._sent.push(message);\n        })\n            .then(delay(delayMs, this.abort));\n    }\n    complete() {\n        if (this.data.inputComplete instanceof rpc_error_1.RpcError) {\n            return Promise.reject(this.data.inputComplete);\n        }\n        const delayMs = this.data.inputComplete === undefined\n            ? 10\n            : this.data.inputComplete;\n        return Promise.resolve(undefined)\n            .then(() => {\n            this._completed = true;\n        })\n            .then(delay(delayMs, this.abort));\n    }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stackDuplexStreamingInterceptors = exports.stackClientStreamingInterceptors = exports.stackServerStreamingInterceptors = exports.stackUnaryInterceptors = exports.stackIntercept = void 0;\nconst runtime_1 = require(\"@protobuf-ts/runtime\");\n/**\n * Creates a \"stack\" of of all interceptors specified in the given `RpcOptions`.\n * Used by generated client implementations.\n * @internal\n */\nfunction stackIntercept(kind, transport, method, options, input) {\n    var _a, _b, _c, _d;\n    if (kind == \"unary\") {\n        let tail = (mtd, inp, opt) => transport.unary(mtd, inp, opt);\n        for (const curr of ((_a = options.interceptors) !== null && _a !== void 0 ? _a : []).filter(i => i.interceptUnary).reverse()) {\n            const next = tail;\n            tail = (mtd, inp, opt) => curr.interceptUnary(next, mtd, inp, opt);\n        }\n        return tail(method, input, options);\n    }\n    if (kind == \"serverStreaming\") {\n        let tail = (mtd, inp, opt) => transport.serverStreaming(mtd, inp, opt);\n        for (const curr of ((_b = options.interceptors) !== null && _b !== void 0 ? _b : []).filter(i => i.interceptServerStreaming).reverse()) {\n            const next = tail;\n            tail = (mtd, inp, opt) => curr.interceptServerStreaming(next, mtd, inp, opt);\n        }\n        return tail(method, input, options);\n    }\n    if (kind == \"clientStreaming\") {\n        let tail = (mtd, opt) => transport.clientStreaming(mtd, opt);\n        for (const curr of ((_c = options.interceptors) !== null && _c !== void 0 ? _c : []).filter(i => i.interceptClientStreaming).reverse()) {\n            const next = tail;\n            tail = (mtd, opt) => curr.interceptClientStreaming(next, mtd, opt);\n        }\n        return tail(method, options);\n    }\n    if (kind == \"duplex\") {\n        let tail = (mtd, opt) => transport.duplex(mtd, opt);\n        for (const curr of ((_d = options.interceptors) !== null && _d !== void 0 ? _d : []).filter(i => i.interceptDuplex).reverse()) {\n            const next = tail;\n            tail = (mtd, opt) => curr.interceptDuplex(next, mtd, opt);\n        }\n        return tail(method, options);\n    }\n    runtime_1.assertNever(kind);\n}\nexports.stackIntercept = stackIntercept;\n/**\n * @deprecated replaced by `stackIntercept()`, still here to support older generated code\n */\nfunction stackUnaryInterceptors(transport, method, input, options) {\n    return stackIntercept(\"unary\", transport, method, options, input);\n}\nexports.stackUnaryInterceptors = stackUnaryInterceptors;\n/**\n * @deprecated replaced by `stackIntercept()`, still here to support older generated code\n */\nfunction stackServerStreamingInterceptors(transport, method, input, options) {\n    return stackIntercept(\"serverStreaming\", transport, method, options, input);\n}\nexports.stackServerStreamingInterceptors = stackServerStreamingInterceptors;\n/**\n * @deprecated replaced by `stackIntercept()`, still here to support older generated code\n */\nfunction stackClientStreamingInterceptors(transport, method, options) {\n    return stackIntercept(\"clientStreaming\", transport, method, options);\n}\nexports.stackClientStreamingInterceptors = stackClientStreamingInterceptors;\n/**\n * @deprecated replaced by `stackIntercept()`, still here to support older generated code\n */\nfunction stackDuplexStreamingInterceptors(transport, method, options) {\n    return stackIntercept(\"duplex\", transport, method, options);\n}\nexports.stackDuplexStreamingInterceptors = stackDuplexStreamingInterceptors;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ServerCallContextController = void 0;\nclass ServerCallContextController {\n    constructor(method, headers, deadline, sendResponseHeadersFn, defaultStatus = { code: 'OK', detail: '' }) {\n        this._cancelled = false;\n        this._listeners = [];\n        this.method = method;\n        this.headers = headers;\n        this.deadline = deadline;\n        this.trailers = {};\n        this._sendRH = sendResponseHeadersFn;\n        this.status = defaultStatus;\n    }\n    /**\n     * Set the call cancelled.\n     *\n     * Invokes all callbacks registered with onCancel() and\n     * sets `cancelled = true`.\n     */\n    notifyCancelled() {\n        if (!this._cancelled) {\n            this._cancelled = true;\n            for (let l of this._listeners) {\n                l();\n            }\n        }\n    }\n    /**\n     * Send response headers.\n     */\n    sendResponseHeaders(data) {\n        this._sendRH(data);\n    }\n    /**\n     * Is the call cancelled?\n     *\n     * When the client closes the connection before the server\n     * is done, the call is cancelled.\n     *\n     * If you want to cancel a request on the server, throw a\n     * RpcError with the CANCELLED status code.\n     */\n    get cancelled() {\n        return this._cancelled;\n    }\n    /**\n     * Add a callback for cancellation.\n     */\n    onCancel(callback) {\n        const l = this._listeners;\n        l.push(callback);\n        return () => {\n            let i = l.indexOf(callback);\n            if (i >= 0)\n                l.splice(i, 1);\n        };\n    }\n}\nexports.ServerCallContextController = ServerCallContextController;\n","\"use strict\";\n// Public API of the rpc runtime.\n// Note: we do not use `export * from ...` to help tree shakers,\n// webpack verbose output hints that this should be useful\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar service_type_1 = require(\"./service-type\");\nObject.defineProperty(exports, \"ServiceType\", { enumerable: true, get: function () { return service_type_1.ServiceType; } });\nvar reflection_info_1 = require(\"./reflection-info\");\nObject.defineProperty(exports, \"readMethodOptions\", { enumerable: true, get: function () { return reflection_info_1.readMethodOptions; } });\nObject.defineProperty(exports, \"readMethodOption\", { enumerable: true, get: function () { return reflection_info_1.readMethodOption; } });\nObject.defineProperty(exports, \"readServiceOption\", { enumerable: true, get: function () { return reflection_info_1.readServiceOption; } });\nvar rpc_error_1 = require(\"./rpc-error\");\nObject.defineProperty(exports, \"RpcError\", { enumerable: true, get: function () { return rpc_error_1.RpcError; } });\nvar rpc_options_1 = require(\"./rpc-options\");\nObject.defineProperty(exports, \"mergeRpcOptions\", { enumerable: true, get: function () { return rpc_options_1.mergeRpcOptions; } });\nvar rpc_output_stream_1 = require(\"./rpc-output-stream\");\nObject.defineProperty(exports, \"RpcOutputStreamController\", { enumerable: true, get: function () { return rpc_output_stream_1.RpcOutputStreamController; } });\nvar test_transport_1 = require(\"./test-transport\");\nObject.defineProperty(exports, \"TestTransport\", { enumerable: true, get: function () { return test_transport_1.TestTransport; } });\nvar deferred_1 = require(\"./deferred\");\nObject.defineProperty(exports, \"Deferred\", { enumerable: true, get: function () { return deferred_1.Deferred; } });\nObject.defineProperty(exports, \"DeferredState\", { enumerable: true, get: function () { return deferred_1.DeferredState; } });\nvar duplex_streaming_call_1 = require(\"./duplex-streaming-call\");\nObject.defineProperty(exports, \"DuplexStreamingCall\", { enumerable: true, get: function () { return duplex_streaming_call_1.DuplexStreamingCall; } });\nvar client_streaming_call_1 = require(\"./client-streaming-call\");\nObject.defineProperty(exports, \"ClientStreamingCall\", { enumerable: true, get: function () { return client_streaming_call_1.ClientStreamingCall; } });\nvar server_streaming_call_1 = require(\"./server-streaming-call\");\nObject.defineProperty(exports, \"ServerStreamingCall\", { enumerable: true, get: function () { return server_streaming_call_1.ServerStreamingCall; } });\nvar unary_call_1 = require(\"./unary-call\");\nObject.defineProperty(exports, \"UnaryCall\", { enumerable: true, get: function () { return unary_call_1.UnaryCall; } });\nvar rpc_interceptor_1 = require(\"./rpc-interceptor\");\nObject.defineProperty(exports, \"stackIntercept\", { enumerable: true, get: function () { return rpc_interceptor_1.stackIntercept; } });\nObject.defineProperty(exports, \"stackDuplexStreamingInterceptors\", { enumerable: true, get: function () { return rpc_interceptor_1.stackDuplexStreamingInterceptors; } });\nObject.defineProperty(exports, \"stackClientStreamingInterceptors\", { enumerable: true, get: function () { return rpc_interceptor_1.stackClientStreamingInterceptors; } });\nObject.defineProperty(exports, \"stackServerStreamingInterceptors\", { enumerable: true, get: function () { return rpc_interceptor_1.stackServerStreamingInterceptors; } });\nObject.defineProperty(exports, \"stackUnaryInterceptors\", { enumerable: true, get: function () { return rpc_interceptor_1.stackUnaryInterceptors; } });\nvar server_call_context_1 = require(\"./server-call-context\");\nObject.defineProperty(exports, \"ServerCallContextController\", { enumerable: true, get: function () { return server_call_context_1.ServerCallContextController; } });\n","import { Span } from \"./span-BZ89ct3l.js\";\nimport { ServiceType } from \"@protobuf-ts/runtime-rpc\";\nimport { MessageType, UnknownFieldHandler, WireType, reflectionMergePartial } from \"@protobuf-ts/runtime\";\n\n//#region generated/ts/backend/span_export_service.ts\nvar ExportSpansRequest$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"tusk.drift.backend.v1.ExportSpansRequest\", [\n\t\t\t{\n\t\t\t\tno: 1,\n\t\t\t\tname: \"observable_service_id\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 2,\n\t\t\t\tname: \"environment\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 3,\n\t\t\t\tname: \"sdk_version\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 4,\n\t\t\t\tname: \"sdk_instance_id\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 5,\n\t\t\t\tname: \"spans\",\n\t\t\t\tkind: \"message\",\n\t\t\t\trepeat: 2,\n\t\t\t\tT: () => Span\n\t\t\t}\n\t\t]);\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.observableServiceId = \"\";\n\t\tmessage.environment = \"\";\n\t\tmessage.sdkVersion = \"\";\n\t\tmessage.sdkInstanceId = \"\";\n\t\tmessage.spans = [];\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.observableServiceId = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tmessage.environment = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tmessage.sdkVersion = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tmessage.sdkInstanceId = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 5:\n\t\t\t\t\tmessage.spans.push(Span.internalBinaryRead(reader, reader.uint32(), options));\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tif (message.observableServiceId !== \"\") writer.tag(1, WireType.LengthDelimited).string(message.observableServiceId);\n\t\tif (message.environment !== \"\") writer.tag(2, WireType.LengthDelimited).string(message.environment);\n\t\tif (message.sdkVersion !== \"\") writer.tag(3, WireType.LengthDelimited).string(message.sdkVersion);\n\t\tif (message.sdkInstanceId !== \"\") writer.tag(4, WireType.LengthDelimited).string(message.sdkInstanceId);\n\t\tfor (let i = 0; i < message.spans.length; i++) Span.internalBinaryWrite(message.spans[i], writer.tag(5, WireType.LengthDelimited).fork(), options).join();\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message tusk.drift.backend.v1.ExportSpansRequest\n*/\nconst ExportSpansRequest = new ExportSpansRequest$Type();\nvar ExportSpansResponse$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"tusk.drift.backend.v1.ExportSpansResponse\", [{\n\t\t\tno: 1,\n\t\t\tname: \"success\",\n\t\t\tkind: \"scalar\",\n\t\t\tT: 8\n\t\t}, {\n\t\t\tno: 2,\n\t\t\tname: \"message\",\n\t\t\tkind: \"scalar\",\n\t\t\tT: 9\n\t\t}]);\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.success = false;\n\t\tmessage.message = \"\";\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.success = reader.bool();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tmessage.message = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tif (message.success !== false) writer.tag(1, WireType.Varint).bool(message.success);\n\t\tif (message.message !== \"\") writer.tag(2, WireType.LengthDelimited).string(message.message);\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message tusk.drift.backend.v1.ExportSpansResponse\n*/\nconst ExportSpansResponse = new ExportSpansResponse$Type();\n/**\n* @generated ServiceType for protobuf service tusk.drift.backend.v1.SpanExportService\n*/\nconst SpanExportService = new ServiceType(\"tusk.drift.backend.v1.SpanExportService\", [{\n\tname: \"ExportSpans\",\n\toptions: {},\n\tI: ExportSpansRequest,\n\tO: ExportSpansResponse\n}]);\n\n//#endregion\nexport { ExportSpansRequest, ExportSpansResponse, SpanExportService };\n//# sourceMappingURL=span_export_service-XwF6hpEK.js.map","/**\n * Paths to exclude from instrumentation to avoid recording SDK export traffic\n */\n\nimport { SpanExportService } from \"@use-tusk/drift-schemas/backend/span_export_service\";\n\nexport const TUSK_SKIP_HEADER = \"x-td-skip-instrumentation\";\n\nexport function isTuskDriftIngestionUrl(urlOrPath?: string | null): boolean {\n  if (!urlOrPath) return false;\n\n  // Use typeName to avoid hardcoding the endpoint path\n  return urlOrPath.includes(SpanExportService.typeName);\n}\n","import { logger } from \"../../../core/utils/logger\";\n\n/**\n * Shimmer utility functions for wrapping and unwrapping methods\n * Based on shimmer patterns commonly used in instrumentation\n */\n\n/**\n * Check if a function has been wrapped by checking for the wrapped property\n */\nexport function isWrapped(func: any): boolean {\n  return typeof func === \"function\" && func._isWrapped === true;\n}\n\n/**\n * Wrap a method on an object with a new function\n */\nexport function wrap<T = any>(\n  target: any,\n  propertyName: string,\n  wrapper: (original: T) => T,\n): T | void {\n  if (typeof target[propertyName] !== \"function\") {\n    logger.debug(`Cannot wrap non-function property: ${propertyName}`);\n    return;\n  }\n\n  if (isWrapped(target[propertyName])) {\n    logger.debug(`Property ${propertyName} is already wrapped`);\n    return;\n  }\n\n  const original = target[propertyName];\n  const wrapped = wrapper(original);\n\n  if (typeof wrapped !== \"function\") {\n    logger.debug(`Wrapper must return a function for property: ${propertyName}`);\n    return;\n  }\n\n  // Mark as wrapped and store original\n  (wrapped as any)._isWrapped = true;\n  (wrapped as any)._original = original;\n  (wrapped as any)._propertyName = propertyName;\n\n  target[propertyName] = wrapped;\n  return wrapped;\n}\n","/**\n * Helper functions for capturing stack traces in replay mode\n *\n * TODO: Consider using a structured format for stack frames:\n *\n * {\n *   \"frames\": [\n *     {\n *       \"fileName\": \"file.js\",\n *       \"lineNumber\": 10,\n *       \"columnNumber\": 20,\n *       \"functionName\": \"functionName\"\n *     }\n *   ]\n * }\n *\n * This would allow for more efficient matching and filtering of stack frames.\n * It would also allow for more accurate stack trace reconstruction in replay mode.\n */\n\n/**\n *\n * @param excludeClassNames - Class names to exclude from the stack trace\n * @returns The stack trace as a string\n */\nexport function captureStackTrace(excludeClassNames: string[] = []): string {\n  const originalStackTraceLimit = Error.stackTraceLimit; // Default is 10\n\n  Error.stackTraceLimit = 100;\n  const s = new Error().stack || \"\";\n  Error.stackTraceLimit = originalStackTraceLimit;\n\n  const defaultExcludes = [\n    \"drift-node-sdk/src/instrumentation\",\n    \"drift-node-sdk/src/core\",\n    \"node_modules/@use-tusk\",\n  ];\n\n  const allExcludes = [...defaultExcludes, ...excludeClassNames];\n\n  return s\n    .split(\"\\n\")\n    .slice(2) // Skip \"Error\" and capture method lines\n    .filter((l) => !allExcludes.some((exclude) => l.includes(exclude)))\n    .join(\"\\n\");\n}\n","import * as crypto from \"crypto\";\nimport jp from \"jsonpath\";\nimport { SpanKind } from \"@opentelemetry/api\";\nimport {\n  HttpClientInputValue,\n  HttpClientOutputValue,\n  HttpServerInputValue,\n  HttpServerOutputValue,\n} from \"./types\";\nimport { OneOf } from \"src/core/types\";\nimport { TransformConfigs } from \"../types\";\n\nexport interface HttpTransform {\n  matcher: HttpTransformMatcher;\n  action: HttpTransformAction;\n}\n\n/** A matcher config. An element is matched iff *all* conditions specified\n * here are true. Only one target field is allowed, but any of the common\n * fields may be provided.\n * */\nexport type HttpTransformMatcher = {\n  /** Request direction, relative to this service. */\n  direction: \"inbound\" | \"outbound\";\n  /** HTTP method: array of methods like [\"GET\", \"POST\"]. Empty array matches\n   * all methods. */\n  method?: (\"GET\" | \"POST\" | \"DELETE\" | \"PUT\")[];\n  /** URL path pattern: \"/api/user/*\" */\n  pathPattern?: string;\n  /** Host pattern. e.g. \"api.example.com\" */\n  host?: string;\n} & OneOf<HttpTransformMatchingFields>;\n\n/** Target fields. See doc for more info on why it's split and not part of the\n * matcher configs . */\nexport type HttpTransformMatchingFields = {\n  /** JSONPath expression e.g. \"$.user.password\" */\n  jsonPath: string;\n  /** Query parameter name */\n  queryParam: string;\n  /** Header name */\n  headerName: string;\n  /** Transform the entire URL path */\n  urlPath: boolean;\n  /** Transform the entire request/response body */\n  fullBody: boolean;\n};\n\nexport type HttpTransformAction =\n  | {\n      type: \"redact\";\n      /** Prefix for hash (default: \"REDACTED_\") */\n      hashPrefix?: string;\n    }\n  | {\n      type: \"mask\";\n      /** Character to use for masking (default: \"*\") */\n      maskChar?: string;\n    }\n  | {\n      type: \"replace\";\n      /** Static replacement value (required) */\n      replaceWith: string;\n    }\n  | {\n      type: \"drop\";\n    };\n\nexport interface HttpSpanData {\n  traceId: string;\n  spanId: string;\n  kind: SpanKind;\n  protocol?: HttpClientInputValue[\"protocol\"];\n  inputValue?: HttpClientInputValue | HttpServerInputValue;\n  outputValue?: HttpClientOutputValue | HttpServerOutputValue;\n  transformMetadata?: {\n    transformed: boolean;\n    actions: TransformAction[];\n  };\n}\n\ntype CompiledTransform = (span: HttpSpanData) => TransformAction | undefined;\n\ntype TransformAction = {\n  type: \"redact\" | \"mask\" | \"replace\" | \"drop\";\n  field: string;\n  reason: string;\n  description?: string;\n};\n\ntype ActionFunction = (value: string) => string;\n\ntype MatcherFunction = (span: HttpSpanData) => boolean;\n\n/**\n * Creates an empty HttpClientInputValue object for dropped spans\n */\nfunction createEmptyClientInputValue(\n  protocol?: HttpClientInputValue[\"protocol\"],\n): HttpClientInputValue {\n  return {\n    protocol: protocol || \"http\",\n    method: \"\",\n    headers: {},\n  };\n}\n\n/**\n * Creates an empty HttpServerInputValue object for dropped spans\n */\nfunction createEmptyServerInputValue(): HttpServerInputValue {\n  return {\n    method: \"\",\n    url: \"\",\n    target: \"\",\n    headers: {},\n    body: \"\",\n    bodySize: 0,\n    httpVersion: \"\",\n  };\n}\n\n/**\n * Creates an empty HttpClientOutputValue object for dropped spans\n */\nfunction createEmptyClientOutputValue(): HttpClientOutputValue {\n  return {\n    httpVersion: \"1.0\",\n    httpVersionMajor: 1,\n    httpVersionMinor: 0,\n    complete: true,\n    readable: true,\n    headers: {},\n  };\n}\n\n/**\n * Creates an empty HttpServerOutputValue object for dropped spans\n */\nfunction createEmptyServerOutputValue(): HttpServerOutputValue {\n  return {\n    headers: {},\n  };\n}\n\nexport class HttpTransformEngine {\n  private compiledTransforms: CompiledTransform[] = [];\n\n  constructor(transformConfigs?: TransformConfigs) {\n    if (transformConfigs?.http) {\n      this.compiledTransforms = transformConfigs.http.map((transform) =>\n        this.compileHttpTransform(transform),\n      );\n    }\n  }\n\n  shouldDropInboundRequest(\n    method: string,\n    url: string,\n    headers?: Record<string, string | string[] | undefined>,\n    body?: string,\n  ): boolean {\n    const testSpan: HttpSpanData = {\n      traceId: \"\",\n      spanId: \"\",\n      kind: SpanKind.SERVER,\n      protocol: \"http\",\n      inputValue: {\n        method,\n        url,\n        target: url,\n        headers: headers || {},\n        httpVersion: \"1.1\",\n        body,\n        bodySize: 0,\n      } as HttpServerInputValue,\n    };\n\n    for (const compiledTransform of this.compiledTransforms) {\n      const action = compiledTransform(testSpan);\n      if (action && action.type === \"drop\") {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  shouldDropOutboundRequest(inputValue: HttpClientInputValue): boolean {\n    const clonedInputValue = JSON.parse(JSON.stringify(inputValue)) as HttpClientInputValue;\n\n    const testSpan: HttpSpanData = {\n      traceId: \"\",\n      spanId: \"\",\n      kind: SpanKind.CLIENT,\n      protocol: inputValue.protocol || \"http\",\n      inputValue: clonedInputValue,\n    };\n\n    for (const compiledTransform of this.compiledTransforms) {\n      const action = compiledTransform(testSpan);\n      if (action && action.type === \"drop\") {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  applyTransforms(spanData: HttpSpanData): HttpSpanData {\n    const actions: TransformAction[] = [];\n\n    for (const compiledTransform of this.compiledTransforms) {\n      const action = compiledTransform(spanData);\n      if (action) {\n        actions.push(action);\n      }\n    }\n\n    if (actions.length > 0) {\n      spanData.transformMetadata = {\n        transformed: true,\n        actions,\n      };\n    }\n\n    return spanData;\n  }\n\n  private compileHttpTransform(transform: HttpTransform): CompiledTransform {\n    const { matcher, action } = transform;\n\n    const matcherFunction = this.compileMatcher(matcher);\n    if (action.type === \"drop\") {\n      return (span) => {\n        if (!matcherFunction(span)) {\n          return;\n        }\n\n        // Drop all sensitive data by replacing with empty objects\n        if (span.inputValue) {\n          span.inputValue =\n            span.kind === SpanKind.CLIENT\n              ? createEmptyClientInputValue(span.protocol)\n              : createEmptyServerInputValue();\n        }\n\n        if (span.outputValue) {\n          span.outputValue =\n            span.kind === SpanKind.CLIENT\n              ? createEmptyClientOutputValue()\n              : createEmptyServerOutputValue();\n        }\n\n        return {\n          type: \"drop\",\n          field: \"entire_span\",\n          reason: \"transforms\",\n          description: this.describeTransform(transform),\n        };\n      };\n    }\n\n    const compiledAction = this.compileAction(matcher, action);\n    const fieldDescription = this.getFieldDescription(matcher);\n\n    return (span) => {\n      if (!matcherFunction(span)) {\n        return;\n      }\n\n      const result = compiledAction(span);\n      if (result) {\n        return {\n          type: action.type,\n          field: fieldDescription,\n          reason: \"transforms\",\n        };\n      }\n\n      return;\n    };\n  }\n\n  private compileAction(\n    matcher: HttpTransformMatcher,\n    action: HttpTransformAction,\n  ): (span: HttpSpanData) => boolean {\n    const actionFunction = this.compileActionFunction(action);\n\n    if (matcher.jsonPath) {\n      return this.compileJsonPathAction(matcher.jsonPath, actionFunction, matcher.direction);\n    }\n    if (matcher.queryParam) {\n      return this.compileQueryParamAction(matcher.queryParam, actionFunction, matcher.direction);\n    }\n    if (matcher.headerName) {\n      return this.compileHeaderAction(matcher.headerName, actionFunction, matcher.direction);\n    }\n    if (matcher.urlPath) {\n      return this.compileUrlPathAction(actionFunction, matcher.direction);\n    }\n    if (matcher.fullBody) {\n      return this.compileFullBodyAction(actionFunction, matcher.direction);\n    }\n\n    return () => false;\n  }\n\n  private compileMatcher(matcher: HttpTransformMatcher): MatcherFunction {\n    const checks: MatcherFunction[] = [];\n\n    if (matcher.direction === \"outbound\") {\n      checks.push((span) => span.kind === SpanKind.CLIENT);\n    } else if (matcher.direction === \"inbound\") {\n      checks.push((span) => span.kind === SpanKind.SERVER);\n    }\n\n    if (matcher.method) {\n      // Empty array means match all methods (wildcard)\n      if (matcher.method.length === 0) {\n        // No check needed - matches all methods\n      } else {\n        const methods = matcher.method.map((method) => method.toUpperCase());\n        checks.push((span) => {\n          const spanMethod = span.inputValue?.method?.toUpperCase();\n          return spanMethod ? methods.includes(spanMethod) : false;\n        });\n      }\n    }\n\n    if (matcher.pathPattern) {\n      try {\n        const pattern = new RegExp(matcher.pathPattern);\n        if (matcher.direction === \"outbound\") {\n          checks.push((span) => {\n            const path = (span.inputValue as HttpClientInputValue)?.path;\n            return path ? pattern.test(path) : false;\n          });\n        } else {\n          checks.push((span) => {\n            const path = (span.inputValue as HttpServerInputValue)?.url;\n            return path ? pattern.test(path) : false;\n          });\n        }\n      } catch (error) {\n        throw new Error(\n          `Invalid path pattern \"${matcher.pathPattern}\": ${error instanceof Error ? error.message : String(error)}`,\n        );\n      }\n    }\n\n    if (matcher.host) {\n      try {\n        const hostPattern = new RegExp(matcher.host);\n        if (matcher.direction === \"outbound\") {\n          checks.push((span) => {\n            const hostname = (span.inputValue as HttpClientInputValue)?.hostname;\n            return hostname ? hostPattern.test(hostname) : false;\n          });\n        } else {\n          checks.push((span) => {\n            const url = (span.inputValue as HttpServerInputValue)?.url;\n            if (!url) {\n              return false;\n            }\n            try {\n              const hostname = new URL(url, \"http://localhost\").hostname;\n              return hostPattern.test(hostname);\n            } catch {\n              return false;\n            }\n          });\n        }\n      } catch (error) {\n        throw new Error(\n          `Invalid host pattern \"${matcher.host}\": ${error instanceof Error ? error.message : String(error)}`,\n        );\n      }\n    }\n\n    if (checks.length === 0) {\n      return () => true;\n    }\n    if (checks.length === 1) {\n      return checks[0];\n    }\n\n    return (span) => checks.every((check) => check(span));\n  }\n\n  private compileJsonPathAction(\n    jsonPath: string,\n    actionFunction: ActionFunction,\n    direction: HttpTransformMatcher[\"direction\"],\n  ): (span: HttpSpanData) => boolean {\n    const selector = direction === \"inbound\" ? \"inputValue\" : \"outputValue\";\n    return (span) => {\n      const target = span[selector];\n      if (!target) {\n        return false;\n      }\n\n      try {\n        // Access body based on direction\n        const body = direction === \"inbound\"\n          ? (target as HttpServerInputValue).body\n          : (target as HttpClientOutputValue | HttpServerOutputValue).body;\n\n        if (!body) {\n          return false;\n        }\n\n        // Body is base64-encoded, decode and parse it\n        let bodyObj;\n        if (typeof body === \"string\") {\n          try {\n            const decoded = Buffer.from(body, \"base64\").toString(\"utf8\");\n            bodyObj = JSON.parse(decoded);\n          } catch (e) {\n            // If decoding/parsing fails, body might not be JSON\n            return false;\n          }\n        } else {\n          bodyObj = body;\n        }\n\n        const nodes = jp.apply(bodyObj, jsonPath, actionFunction);\n\n        // Re-encode the modified body as base64\n        if (typeof body === \"string\" && nodes.length > 0) {\n          const reencoded = Buffer.from(JSON.stringify(bodyObj)).toString(\"base64\");\n          if (direction === \"inbound\") {\n            (target as HttpServerInputValue).body = reencoded;\n          } else {\n            (target as HttpClientOutputValue | HttpServerOutputValue).body = reencoded;\n          }\n        }\n\n        return nodes.length > 0;\n      } catch (error) {\n        return false;\n      }\n    };\n  }\n\n  private compileHeaderAction(\n    headerName: string,\n    actionFunction: ActionFunction,\n    _: HttpTransformMatcher[\"direction\"],\n  ): (span: HttpSpanData) => boolean {\n    const lowerHeader = headerName.toLowerCase();\n\n    return (span) => {\n      // For inbound: transform request headers (SERVER span inputValue)\n      // For outbound: transform request headers (CLIENT span inputValue)\n      // Note: We always transform the request headers, which is inputValue for both directions\n      const target = span.inputValue;\n      if (!target?.headers) {\n        return false;\n      }\n\n      let applied = false;\n      for (const key of Object.keys(target.headers)) {\n        if (key.toLowerCase() === lowerHeader) {\n          const headerValue = target.headers[key];\n          if (typeof headerValue === \"string\") {\n            (target.headers as Record<string, string>)[key] = actionFunction(headerValue);\n            applied = true;\n          }\n        }\n      }\n      return applied;\n    };\n  }\n\n  private compileQueryParamAction(\n    queryParam: string,\n    actionFunction: ActionFunction,\n    direction: HttpTransformMatcher[\"direction\"],\n  ): (span: HttpSpanData) => boolean {\n    return (span) => {\n      if (!span.inputValue) {\n        return false;\n      }\n\n      return this.transformQueryParamInData(span.inputValue, queryParam, actionFunction, direction);\n    };\n  }\n\n  private compileFullBodyAction(\n    actionFunction: ActionFunction,\n    direction: HttpTransformMatcher[\"direction\"],\n  ): (span: HttpSpanData) => boolean {\n    const selector = direction === \"inbound\" ? \"inputValue\" : \"outputValue\";\n\n    return (span) => {\n      const target = span[selector];\n      if (!target || !(\"body\" in target) || target.body === undefined) {\n        return false;\n      }\n\n      if (direction === \"outbound\") {\n        // Output bodies are base64-encoded strings - decode, transform, re-encode\n        const outputTarget = target as HttpClientOutputValue | HttpServerOutputValue;\n        if (typeof outputTarget.body === \"string\") {\n          try {\n            const decoded = Buffer.from(outputTarget.body, \"base64\").toString(\"utf8\");\n            const transformed = actionFunction(decoded);\n            outputTarget.body = Buffer.from(transformed).toString(\"base64\");\n          } catch (error) {\n            // If not valid base64, treat as plain string\n            outputTarget.body = Buffer.from(actionFunction(outputTarget.body)).toString(\"base64\");\n          }\n        }\n      } else {\n        // Input bodies can be either objects or base64-encoded strings\n        const inputTarget = target as HttpServerInputValue;\n        if (typeof inputTarget.body === \"string\") {\n          try {\n            const decoded = Buffer.from(inputTarget.body, \"base64\").toString(\"utf8\");\n            const transformed = actionFunction(decoded);\n            inputTarget.body = Buffer.from(transformed).toString(\"base64\");\n          } catch (error) {\n            // If not valid base64, treat as plain string\n            inputTarget.body = Buffer.from(actionFunction(inputTarget.body)).toString(\"base64\");\n          }\n        } else if (typeof inputTarget.body === \"object\") {\n          // Body is a plain object - transform it directly\n          const bodyStr = JSON.stringify(inputTarget.body);\n          const transformed = actionFunction(bodyStr);\n          // Replace with transformed value (could be string or parsed back)\n          try {\n            inputTarget.body = JSON.parse(transformed);\n          } catch {\n            // If transformed value is not JSON, store as-is\n            inputTarget.body = transformed as any;\n          }\n        }\n      }\n      return true;\n    };\n  }\n\n  private compileUrlPathAction(\n    actionFunction: ActionFunction,\n    direction: HttpTransformMatcher[\"direction\"],\n  ): (span: HttpSpanData) => boolean {\n    return (span) => {\n      if (!span.inputValue) {\n        return false;\n      }\n      return this.transformUrlPathInData(span.inputValue, actionFunction, direction);\n    };\n  }\n\n  private transformQueryParamInData(\n    data: HttpClientInputValue | HttpServerInputValue,\n    queryParam: string,\n    actionFunction: ActionFunction,\n    direction: HttpTransformMatcher[\"direction\"],\n  ): boolean {\n    if (!data) {\n      return false;\n    }\n\n    let applied = false;\n\n    if (direction === \"outbound\") {\n      const clientData = data as HttpClientInputValue;\n      if (clientData.path && typeof clientData.path === \"string\") {\n        const url = new URL(clientData.path, \"http://localhost\");\n        if (url.searchParams.has(queryParam)) {\n          const oldValue = url.searchParams.get(queryParam);\n          if (oldValue !== null) {\n            const newValue = actionFunction(oldValue);\n            url.searchParams.set(queryParam, newValue);\n            clientData.path = url.pathname + url.search;\n            applied = true;\n          }\n        }\n      }\n    } else {\n      const serverData = data as HttpServerInputValue;\n      // Transform url field\n      if (serverData.url && typeof serverData.url === \"string\") {\n        try {\n          const url = new URL(serverData.url);\n          if (url.searchParams.has(queryParam)) {\n            const oldValue = url.searchParams.get(queryParam);\n            if (oldValue !== null) {\n              const newValue = actionFunction(oldValue);\n              url.searchParams.set(queryParam, newValue);\n              serverData.url = url.toString();\n              applied = true;\n            }\n          }\n        } catch {\n          // ignore\n        }\n      }\n      // Transform target field\n      if (serverData.target && typeof serverData.target === \"string\") {\n        try {\n          const url = new URL(serverData.target, \"http://localhost\");\n          if (url.searchParams.has(queryParam)) {\n            const oldValue = url.searchParams.get(queryParam);\n            if (oldValue !== null) {\n              const newValue = actionFunction(oldValue);\n              url.searchParams.set(queryParam, newValue);\n              serverData.target = url.pathname + url.search;\n              applied = true;\n            }\n          }\n        } catch {\n          // ignore\n        }\n      }\n    }\n\n    return applied;\n  }\n\n  private transformUrlPathInData(\n    data: HttpClientInputValue | HttpServerInputValue,\n    actionFunction: ActionFunction,\n    direction: HttpTransformMatcher[\"direction\"],\n  ): boolean {\n    if (!data) {\n      return false;\n    }\n\n    let applied = false;\n\n    if (direction === \"outbound\") {\n      const clientData = data as HttpClientInputValue;\n      if (clientData.path && typeof clientData.path === \"string\") {\n        clientData.path = actionFunction(clientData.path);\n        applied = true;\n      }\n    } else {\n      const serverData = data as HttpServerInputValue;\n      if (serverData.url && typeof serverData.url === \"string\") {\n        serverData.url = actionFunction(serverData.url);\n        applied = true;\n      }\n      if (serverData.target && typeof serverData.target === \"string\") {\n        serverData.target = actionFunction(serverData.target);\n        applied = true;\n      }\n    }\n\n    return applied;\n  }\n\n  private compileActionFunction(action: HttpTransformAction): ActionFunction {\n    switch (action.type) {\n      case \"redact\":\n        return (value) => {\n          const prefix = action.hashPrefix || \"REDACTED_\";\n          const hash = crypto.createHash(\"sha256\").update(String(value)).digest(\"hex\");\n          return `${prefix}${hash.substring(0, 12)}...`;\n        };\n      case \"mask\":\n        return (value) => {\n          const maskChar = action.maskChar || \"*\";\n          return maskChar.repeat(value.length);\n        };\n      case \"replace\":\n        return () => action.replaceWith;\n      default:\n        return (value) => value;\n    }\n  }\n\n  private getFieldDescription(matcher: HttpTransformMatcher): string {\n    if (matcher.jsonPath) return `jsonPath:${matcher.jsonPath}`;\n    if (matcher.queryParam) return `queryParam:${matcher.queryParam}`;\n    if (matcher.headerName) return `header:${matcher.headerName}`;\n    if (matcher.urlPath) return \"urlPath\";\n    if (matcher.fullBody) return \"fullBody\";\n    return \"unknown\";\n  }\n\n  private describeTransform(transform: HttpTransform): string {\n    return JSON.stringify(transform.matcher);\n  }\n}\n","import { TdInstrumentationBase } from \"../../core/baseClasses/TdInstrumentationBase\";\nimport { TdInstrumentationNodeModule } from \"../../core/baseClasses/TdInstrumentationNodeModule\";\nimport { TdInstrumentationConfig } from \"../../core/baseClasses/TdInstrumentationAbstract\";\nimport { SpanUtils, SpanInfo } from \"../../../core/tracing/SpanUtils\";\nimport { SpanKind, SpanStatusCode, context } from \"@opentelemetry/api\";\nimport type {\n  ClientRequest,\n  IncomingHttpHeaders,\n  IncomingMessage,\n  RequestOptions,\n  Server,\n  ServerResponse,\n} from \"http\";\nimport { TuskDriftCore, TuskDriftMode } from \"../../../core/TuskDrift\";\nimport {\n  combineChunks,\n  getDecodedType,\n  httpBodyEncoder,\n  normalizeHeaders,\n  ACCEPTABLE_CONTENT_TYPES,\n} from \"./utils\";\nimport { HttpReplayHooks } from \"./HttpReplayHooks\";\nimport {\n  HttpClientInputValue,\n  HttpServerInputValue,\n  HttpModuleExports,\n  HttpsModuleExports,\n  HttpClientOutputValue,\n  HttpServerOutputValue,\n  HttpProtocol,\n} from \"./types\";\nimport {\n  wrap,\n  TUSK_SKIP_HEADER,\n  handleRecordMode,\n  handleReplayMode,\n  isTuskDriftIngestionUrl,\n  captureStackTrace,\n} from \"../../core/utils\";\nimport { PackageType, StatusCode } from \"@use-tusk/drift-schemas/core/span\";\nimport {\n  EncodingType,\n  JsonSchemaHelper,\n  SchemaMerges,\n} from \"../../../core/tracing/JsonSchemaHelper\";\nimport {\n  shouldSample,\n  OriginalGlobalUtils,\n  logger,\n  isEsm,\n  isNextJsRuntime,\n} from \"../../../core/utils\";\nimport { EnvVarTracker } from \"../../core/trackers\";\nimport { HttpSpanData, HttpTransformEngine } from \"./HttpTransformEngine\";\nimport { TransformConfigs } from \"../types\";\nimport { TraceBlockingManager } from \"src/core/tracing/TraceBlockingManager\";\n\nexport interface HttpInstrumentationConfig extends TdInstrumentationConfig {\n  requestHook?: (request: any) => void;\n  responseHook?: (response: any) => void;\n  mode: TuskDriftMode;\n  transforms?: TransformConfigs;\n}\n\nexport class HttpInstrumentation extends TdInstrumentationBase {\n  private readonly INSTRUMENTATION_NAME = \"HttpInstrumentation\";\n  private mode: TuskDriftMode;\n  private replayHooks: HttpReplayHooks;\n  private tuskDrift: TuskDriftCore;\n  private transformEngine: HttpTransformEngine;\n\n  constructor(config: HttpInstrumentationConfig) {\n    super(\"http\", config);\n    this.mode = config.mode;\n    this.replayHooks = new HttpReplayHooks();\n    this.tuskDrift = TuskDriftCore.getInstance();\n    this.transformEngine = new HttpTransformEngine(config.transforms);\n  }\n\n  init(): TdInstrumentationNodeModule[] {\n    return [\n      new TdInstrumentationNodeModule({\n        name: \"http\",\n        supportedVersions: [\"*\"],\n        patch: (moduleExports: HttpModuleExports) => this._patchHttpModule(moduleExports, \"http\"),\n      }),\n      new TdInstrumentationNodeModule({\n        name: \"https\",\n        supportedVersions: [\"*\"],\n        patch: (moduleExports: HttpsModuleExports) => this._patchHttpModule(moduleExports, \"https\"),\n      }),\n    ];\n  }\n\n  private _patchHttpModule(\n    httpModule: HttpModuleExports | HttpsModuleExports,\n    protocol: HttpProtocol,\n  ): HttpModuleExports | HttpsModuleExports {\n    const protocolUpper = protocol.toUpperCase();\n    logger.debug(`[HttpInstrumentation] Patching ${protocolUpper} module in ${this.mode} mode`);\n\n    if (this.isModulePatched(httpModule)) {\n      logger.debug(`[HttpInstrumentation] ${protocolUpper} module already patched, skipping`);\n      return httpModule;\n    }\n\n    if (isEsm(httpModule)) {\n      // ESM Case: Also set wrapped methods on the default export\n      // In ESM: import http from 'http' gives { default: <http module>, request: ..., get: ... }\n      // Users may access http.request (namespace) OR http.default.request (default export)\n      // We need to ensure both are wrapped\n      if (httpModule.default) {\n        // Should always be true in ESM mode, but just in case\n        this._wrap(httpModule.default, \"request\", this._getRequestPatchFn(protocol));\n        this._wrap(httpModule.default, \"get\", this._getGetPatchFn(protocol));\n      }\n    } else {\n      // Wrap methods on the http/https module namespace\n      this._wrap(httpModule, \"request\", this._getRequestPatchFn(protocol));\n      this._wrap(httpModule, \"get\", this._getGetPatchFn(protocol));\n    }\n\n    // Wrap Server.prototype.emit (works the same for both CommonJS and ESM)\n    // This is a prototype method, so no special ESM handling needed\n    const HttpServer = httpModule.Server;\n    if (HttpServer && HttpServer.prototype) {\n      this._wrap(HttpServer.prototype, \"emit\", this._getServerEmitPatchFn(protocol));\n      logger.debug(`[HttpInstrumentation] Wrapped Server.prototype.emit for ${protocolUpper}`);\n    }\n\n    this.markModuleAsPatched(httpModule);\n    logger.debug(`[HttpInstrumentation] ${protocolUpper} module patching complete`);\n\n    return httpModule;\n  }\n\n  private _createServerSpan({\n    req,\n    res,\n    originalHandler,\n    protocol,\n  }: {\n    req: IncomingMessage;\n    res: ServerResponse;\n    originalHandler: Function;\n    protocol: HttpProtocol;\n  }): void {\n    // Don't record/replay if this is a nextJs runtime\n    // We have a nextJs instrumentation to handle this\n    if (isNextJsRuntime()) {\n      logger.debug(\n        `[HttpInstrumentation] Skipping recording/replaying for nextJs runtime, handled by nextJs instrumentation`,\n      );\n      return originalHandler.call(this);\n    }\n\n    const method = req.method || \"GET\";\n    const url = req.url || \"/\";\n    const target = req.url || \"/\";\n    const spanProtocol = this._normalizeProtocol(protocol, \"http\");\n\n    // Ignore drift ingestion endpoints (avoid recording SDK export traffic)\n    if (isTuskDriftIngestionUrl(url) || isTuskDriftIngestionUrl(target)) {\n      logger.debug(`[HttpInstrumentation] Ignoring drift ingestion endpoints`);\n      return originalHandler.call(this);\n    }\n\n    // Check if transforms want to drop this inbound request entirely (prevents trace creation)\n    if (this.transformEngine.shouldDropInboundRequest(method, url, req.headers)) {\n      logger.debug(\n        `[HttpInstrumentation] Dropping inbound request due to transforms: ${method} ${url}`,\n      );\n      return originalHandler.call(this);\n    }\n\n    // Handle replay mode using replay hooks (only if app is ready)\n    if (this.mode === TuskDriftMode.REPLAY) {\n      return handleReplayMode({\n        // Shouldn't be used for server requests\n        noOpRequestHandler: () => {\n          throw new Error(\n            `[HttpInstrumentation] Should never call noOpRequestHandler for server requests`,\n          );\n        },\n        isServerRequest: true,\n        replayModeHandler: () => {\n          // Remove accept-encoding header to prevent compression during replay\n          // since we're providing already-decompressed data\n          if (req.headers[\"accept-encoding\"]) {\n            delete req.headers[\"accept-encoding\"];\n          }\n\n          // Build input value object for server request in replay mode\n          const fullUrl = `${spanProtocol}://${req.headers.host || \"localhost\"}${url}`;\n          const inputValue = {\n            method,\n            url: fullUrl,\n            target,\n            headers: req.headers,\n            httpVersion: req.httpVersion,\n            remoteAddress: req.socket?.remoteAddress,\n            remotePort: req.socket?.remotePort,\n          };\n\n          // Set replay trace context (replaces previous replayHooks-only call)\n          const replayTraceId = this.replayHooks.extractTraceIdFromHeaders(req);\n          if (!replayTraceId) {\n            logger.debug(`[HttpInstrumentation] No trace id found in headers`, req.headers);\n            // No trace context; proceed without span\n            return originalHandler.call(this);\n          }\n\n          logger.debug(`[HttpInstrumentation] Setting replay trace id`, replayTraceId);\n\n          // Fetch env vars from CLI if requested\n          const shouldFetch = this.replayHooks.extractShouldFetchEnvVars(req);\n          if (shouldFetch) {\n            try {\n              const envVars = this.tuskDrift.requestEnvVarsSync(replayTraceId);\n              EnvVarTracker.setEnvVars(replayTraceId, envVars);\n              logger.debug(`[HttpInstrumentation] Fetched env vars from CLI for trace ${replayTraceId}`);\n            } catch (error) {\n              logger.error(`[HttpInstrumentation] Failed to fetch env vars from CLI:`, error);\n            }\n          }\n\n          const ctxWithReplayTraceId = SpanUtils.setCurrentReplayTraceId(replayTraceId);\n\n          if (!ctxWithReplayTraceId) {\n            // Replay mode, okay to throw error\n            throw new Error(\"Error setting current replay trace id\");\n          }\n\n          return context.with(ctxWithReplayTraceId, () => {\n            return SpanUtils.createAndExecuteSpan(\n              this.mode,\n              () => originalHandler.call(this),\n              {\n                name: `${target}`,\n                kind: SpanKind.SERVER,\n                packageName: spanProtocol,\n                submodule: method,\n                packageType: PackageType.HTTP,\n                instrumentationName: this.INSTRUMENTATION_NAME,\n                inputValue,\n                inputSchemaMerges: {\n                  headers: {\n                    matchImportance: 0,\n                  },\n                },\n                isPreAppStart: false,\n              },\n              (spanInfo) => {\n                // Use the full server-span handler to capture input/output and end the span\n                return this._handleInboundRequestInSpan({\n                  req,\n                  res,\n                  originalHandler,\n                  spanInfo,\n                  inputValue,\n                  schemaMerges: {\n                    headers: {\n                      matchImportance: 0,\n                    },\n                  },\n                  protocol: spanProtocol,\n                });\n              },\n            );\n          });\n        },\n      });\n    } else if (this.mode === TuskDriftMode.RECORD) {\n      // Skip CORS preflight in RECORD mode (don't create a span)\n      if (method.toUpperCase() === \"OPTIONS\" || !!req.headers[\"access-control-request-method\"]) {\n        return originalHandler.call(this);\n      }\n\n      logger.debug(`[HttpInstrumentation] Creating server span for ${method} ${url}`);\n      return handleRecordMode({\n        originalFunctionCall: () => originalHandler.call(this),\n        recordModeHandler: ({ isPreAppStart }) => {\n          // Build input value object for server request\n          const fullUrl = `${spanProtocol}://${req.headers.host || \"localhost\"}${url}`;\n          const filteredHeaders = { ...req.headers };\n          // Remove accept-encoding header (case-insensitive) to prevent compression during replay\n          //\n          // During RECORD mode, responses are compressed by the server (gzip/deflate/br),\n          // then decompressed by our instrumentation and stored as uncompressed base64 data.\n          // During REPLAY mode, if the client sends Accept-Encoding headers, the server's\n          // compression middleware will compress our already-decompressed response data,\n          // resulting in double-compressed garbage that the client can't decode.\n          //\n          // Therefore, we remove all Accept-Encoding headers during replay so compression middleware\n          // skips compression and returns our stored decompressed data directly.\n          // IMPORTANT: only update the headers object we are recording, not the original request headers\n          Object.keys(filteredHeaders).forEach((key) => {\n            if (key.toLowerCase() === \"accept-encoding\") {\n              delete filteredHeaders[key];\n            }\n          });\n          const inputValue = {\n            method,\n            url: fullUrl,\n            target,\n            headers: filteredHeaders,\n            httpVersion: req.httpVersion,\n            remoteAddress: req.socket?.remoteAddress,\n            remotePort: req.socket?.remotePort,\n          };\n\n          logger.debug(\n            `[HttpInstrumentation] Http inbound request arriving, inputValue: ${JSON.stringify(inputValue)}`,\n          );\n\n          return SpanUtils.createAndExecuteSpan(\n            this.mode,\n            () => originalHandler.call(this),\n            {\n              name: `${target}`,\n              kind: SpanKind.SERVER,\n              packageName: spanProtocol,\n              packageType: PackageType.HTTP,\n              submodule: method,\n              instrumentationName: this.INSTRUMENTATION_NAME,\n              inputValue,\n              inputSchemaMerges: {\n                headers: {\n                  matchImportance: 0,\n                },\n              },\n              isPreAppStart,\n            },\n            (spanInfo) => {\n              return this._handleInboundRequestInSpan({\n                req,\n                res,\n                originalHandler,\n                spanInfo,\n                inputValue, // Body will be populated by _captureServerRequestBody in _handleInboundRequestInSpan\n                schemaMerges: {\n                  headers: {\n                    matchImportance: 0,\n                  },\n                },\n                protocol: spanProtocol,\n              });\n            },\n          );\n        },\n        spanKind: SpanKind.SERVER,\n      });\n    } else {\n      // Should never happen since we're only patching record and replay modes\n      return originalHandler.call(this);\n    }\n  }\n\n  /**\n   * Handles server-side request processing within a span context.\n   *\n   * TypeScript typing notes:\n   * - req: IncomingMessage - We can use proper typing because we only patch req.read() with signature-compatible changes\n   * - res: any - We must use 'any' because we patch res.end() with incompatible signatures (async function vs sync overloads)\n   *\n   * NOTE: addAttributes() will override the current attributes so we need to pass current schema merges\n   * to make sure we don't lose any information\n   */\n  private _handleInboundRequestInSpan({\n    req,\n    res,\n    originalHandler,\n    spanInfo,\n    inputValue,\n    schemaMerges,\n    protocol,\n  }: {\n    req: IncomingMessage;\n    res: ServerResponse;\n    originalHandler: Function;\n    spanInfo: SpanInfo;\n    inputValue: {\n      method: string;\n      url: string;\n      target: string;\n      headers: IncomingHttpHeaders;\n      httpVersion: string;\n      remoteAddress?: string;\n      remotePort?: number;\n    };\n    schemaMerges: SchemaMerges | undefined;\n    protocol: HttpProtocol;\n  }) {\n    const self = this;\n    const spanProtocol = this._normalizeProtocol(protocol, \"http\");\n    // Bind context to request/response objects\n    context.bind(spanInfo.context, req);\n    context.bind(spanInfo.context, res);\n\n    // Track the complete input value (will be updated when body is captured)\n    let completeInputValue: any = inputValue;\n\n    // Capture request body if it exists\n    // NOTE: IncomingMessage doesn't have a .body property - we need to capture it from the stream\n    // This patches req.read() and listens for 'data'/'end' events to collect body chunks as they arrive\n    // Handles both read() consumption and pipe/stream consumption patterns used by different frameworks\n    this._captureServerRequestBody(req, spanInfo, inputValue, schemaMerges, (updatedInputValue) => {\n      completeInputValue = updatedInputValue;\n    });\n\n    // Track response completion\n    const originalEnd = res.end.bind(res);\n    const responseChunks: (string | Buffer)[] = [];\n\n    // Patch response write to capture body with Buffer support\n    const originalWrite = res.write?.bind(res);\n    if (originalWrite) {\n      res.write = function (chunk: string | Buffer, encoding?: any, callback?: any) {\n        if (chunk) {\n          responseChunks.push(chunk);\n        }\n        return originalWrite.call(this, chunk, encoding, callback);\n      };\n    }\n\n    res.end = function (chunk: any, encoding?: any, callback?: any) {\n      const statusCode = res.statusCode;\n\n      // Capture any final response data\n      if (chunk) {\n        responseChunks.push(chunk);\n      }\n\n      logger.debug(\n        `[HttpInstrumentation] Server request completed: ${statusCode} (${SpanUtils.getTraceInfo()})`,\n      );\n\n      // Process response body asynchronously without blocking\n      process.nextTick(async () => {\n        // Normalize headers to lowercase for consistent access\n        const rawHeaders = res.getHeaders ? (res.getHeaders() as Record<string, string>) : {};\n        const normalizedHeaders = normalizeHeaders(rawHeaders);\n\n        const outputValue: HttpServerOutputValue = {\n          statusCode,\n          statusMessage: res.statusMessage,\n          headers: normalizedHeaders,\n        };\n\n        // Process response body if we have chunks\n        if (responseChunks.length > 0) {\n          try {\n            const responseBuffer = combineChunks(responseChunks);\n            const contentEncoding = outputValue.headers?.[\"content-encoding\"];\n\n            const encodedBody = await httpBodyEncoder({\n              bodyBuffer: responseBuffer,\n              contentEncoding,\n            });\n\n            // Store parsed body data\n            outputValue.body = encodedBody;\n            outputValue.bodySize = responseBuffer.length;\n          } catch (error) {\n            logger.error(`[HttpInstrumentation] Error processing server response body:`, error);\n          }\n        }\n\n        try {\n          // Apply transforms to span data before adding attributes\n          // Use completeInputValue which includes the request body\n          const spanData: HttpSpanData = {\n            traceId: spanInfo.traceId,\n            spanId: spanInfo.spanId,\n            kind: SpanKind.SERVER,\n            protocol: spanProtocol,\n            inputValue: completeInputValue,\n            outputValue,\n          };\n          self.transformEngine.applyTransforms(spanData);\n\n          SpanUtils.addSpanAttributes(spanInfo.span, {\n            inputValue: spanData.inputValue,\n            outputValue: spanData.outputValue,\n            outputSchemaMerges: {\n              body: {\n                encoding: EncodingType.BASE64,\n                decodedType: getDecodedType(spanData.outputValue?.headers?.[\"content-type\"] || \"\"),\n              },\n              headers: {\n                matchImportance: 0,\n              },\n            },\n            metadata: {\n              ENV_VARS: EnvVarTracker.getEnvVars(spanInfo.traceId),\n            },\n            ...(spanData.transformMetadata && {\n              transformMetadata: spanData.transformMetadata,\n            }),\n          });\n\n          // Make sure to delete the env vars from the tracker\n          EnvVarTracker.clearEnvVars(spanInfo.traceId);\n\n          const status =\n            statusCode >= 400\n              ? { code: SpanStatusCode.ERROR, message: `HTTP ${statusCode}` }\n              : { code: SpanStatusCode.OK };\n\n          SpanUtils.setStatus(spanInfo.span, status);\n\n          // Ignore static asset responses\n          // Must check this before ending the span\n          const decodedType = getDecodedType(outputValue.headers?.[\"content-type\"] || \"\");\n          if (decodedType && !ACCEPTABLE_CONTENT_TYPES.has(decodedType)) {\n            const traceBlockingManager = TraceBlockingManager.getInstance();\n            traceBlockingManager.blockTrace(spanInfo.traceId);\n            logger.debug(\n              `[HttpInstrumentation] Blocking trace ${spanInfo.traceId} because it is not an acceptable decoded type: ${decodedType}`,\n              { acceptableContentTypes: Array.from(ACCEPTABLE_CONTENT_TYPES) },\n            );\n          }\n\n          SpanUtils.endSpan(spanInfo.span);\n        } catch (error) {\n          logger.error(`[HttpInstrumentation] Error adding response attributes to span:`, error);\n        }\n\n        if (self.mode === TuskDriftMode.REPLAY) {\n          try {\n            const now = OriginalGlobalUtils.getOriginalDate();\n            const replayTraceId = SpanUtils.getCurrentReplayTraceId() || spanInfo.traceId;\n\n            // Derive packageName from URL if needed\n            let packageName = spanProtocol;\n            try {\n              const u = new URL(completeInputValue.url || inputValue.url);\n              packageName = self._normalizeProtocol(u.protocol || undefined, spanProtocol);\n            } catch {}\n\n            // Compute schemas and hashes using the complete input value (with body)\n            const { schema: inputSchema, decodedValueHash: inputValueHash } =\n              JsonSchemaHelper.generateSchemaAndHash(completeInputValue, {\n                body: {\n                  encoding: EncodingType.BASE64,\n                  decodedType: getDecodedType(\n                    (completeInputValue.headers && completeInputValue.headers[\"content-type\"]) ||\n                      \"\",\n                  ),\n                },\n                headers: {\n                  matchImportance: 0,\n                },\n              });\n\n            const { schema: outputSchema, decodedValueHash: outputValueHash } =\n              JsonSchemaHelper.generateSchemaAndHash(outputValue, {\n                body: {\n                  encoding: EncodingType.BASE64,\n                  decodedType: getDecodedType(outputValue.headers[\"content-type\"] || \"\"),\n                },\n                headers: {\n                  matchImportance: 0,\n                },\n              });\n\n            const cleanSpan = {\n              traceId: replayTraceId,\n              spanId: spanInfo.spanId,\n              parentSpanId: \"\",\n              name: `${completeInputValue.target || inputValue.target}`,\n              packageName,\n              instrumentationName: \"HttpInstrumentation\",\n              submoduleName: completeInputValue.method || inputValue.method,\n              inputValue: completeInputValue,\n              outputValue,\n              inputSchema,\n              outputSchema,\n              inputSchemaHash: JsonSchemaHelper.generateDeterministicHash(inputSchema),\n              outputSchemaHash: JsonSchemaHelper.generateDeterministicHash(outputSchema),\n              inputValueHash,\n              outputValueHash,\n              // Use OpenTelemetry SpanKind for CleanSpanData.kind\n              kind: SpanKind.SERVER,\n              packageType: PackageType.HTTP,\n              status: {\n                code: statusCode >= 400 ? StatusCode.ERROR : StatusCode.OK,\n                message: statusCode >= 400 ? `HTTP ${statusCode}` : \"\",\n              },\n              timestamp: {\n                seconds: Math.floor(now.getTime() / 1000),\n                nanos: (now.getTime() % 1000) * 1_000_000,\n              },\n              duration: { seconds: 0, nanos: 0 },\n              isRootSpan: true,\n              isPreAppStart: false,\n              metadata: undefined,\n            };\n\n            await self.tuskDrift.sendInboundSpanForReplay(cleanSpan);\n          } catch (e) {\n            logger.error(\"[HttpInstrumentation] Failed to build/send inbound replay span:\", e);\n          }\n        }\n      });\n\n      return originalEnd.call(this, chunk, encoding, callback);\n    };\n\n    // Track errors\n    req.on(\"error\", (error: Error) => {\n      try {\n        logger.debug(\n          `[HttpInstrumentation] Server request error: ${error.message} (${SpanUtils.getTraceInfo()})`,\n        );\n        SpanUtils.endSpan(spanInfo.span, {\n          code: SpanStatusCode.ERROR,\n          message: error.message,\n        });\n      } catch (error) {\n        logger.error(`[HttpInstrumentation] Error ending span:`, error);\n      }\n    });\n\n    res.on(\"error\", (error: Error) => {\n      try {\n        logger.debug(\n          `[HttpInstrumentation] Server response error: ${error.message} (${SpanUtils.getTraceInfo()})`,\n        );\n        SpanUtils.endSpan(spanInfo.span, {\n          code: SpanStatusCode.ERROR,\n          message: error.message,\n        });\n      } catch (error) {\n        logger.error(`[HttpInstrumentation] Error ending span:`, error);\n      }\n    });\n\n    // Call the original handler within the span context\n    return originalHandler.call(this);\n  }\n\n  /**\n   * Captures the request body from an IncomingMessage stream by patching req.read() and listening for data events.\n   * This is necessary because IncomingMessage doesn't expose the body directly - it must be read from the stream.\n   *\n   * The method handles two consumption patterns:\n   * - READ mode: When application calls req.read() directly\n   * - PIPE mode: When request is piped/streamed (data events)\n   *\n   * When the request body is fully captured (on 'end' event), it parses the body and updates the span\n   * with the complete input data. This ensures exported spans contain the full request body information.\n   *\n   * NOTE: addAttributes() will override the current attributes so we need to pass current schema merges\n   * to make sure we don't lose any information\n   */\n  private _captureServerRequestBody(\n    req: IncomingMessage,\n    spanInfo: SpanInfo,\n    inputValue: {\n      method: string;\n      url: string;\n      target: string;\n      headers: IncomingHttpHeaders;\n      httpVersion: string;\n      remoteAddress?: string;\n      remotePort?: number;\n    },\n    schemaMerges: SchemaMerges | undefined,\n    onBodyCaptured?: (updatedInputValue: HttpServerInputValue) => void,\n  ): void {\n    const requestBodyChunks: Buffer[] = [];\n    let streamConsumptionMode: \"NOT_CONSUMING\" | \"READ\" | \"PIPE\" = \"NOT_CONSUMING\";\n\n    // Patch req.read to capture body chunks when application calls read()\n    const originalRead = req.read.bind(req);\n    req.read = function read(size?: number) {\n      const chunk = originalRead(size);\n      if (\n        chunk &&\n        (streamConsumptionMode === \"READ\" || streamConsumptionMode === \"NOT_CONSUMING\")\n      ) {\n        streamConsumptionMode = \"READ\";\n        requestBodyChunks.push(Buffer.from(chunk));\n      }\n      return chunk;\n    };\n\n    // Listen for 'resume' event to know when streaming starts\n    req.once(\"resume\", () => {\n      req.addListener(\"data\", (chunk: string | Buffer) => {\n        if (\n          chunk &&\n          (streamConsumptionMode === \"PIPE\" || streamConsumptionMode === \"NOT_CONSUMING\")\n        ) {\n          streamConsumptionMode = \"PIPE\";\n          requestBodyChunks.push(Buffer.from(chunk));\n        }\n      });\n    });\n\n    // Process the complete body when the request ends\n    req.addListener(\"end\", async (chunk?: string | Buffer) => {\n      if (chunk) {\n        requestBodyChunks.push(Buffer.from(chunk));\n      }\n\n      if (requestBodyChunks.length > 0) {\n        try {\n          const bodyBuffer = Buffer.concat(requestBodyChunks);\n\n          // Parse the request body using existing body parser\n          const encodedBody = await httpBodyEncoder({\n            bodyBuffer,\n            contentEncoding: req.headers[\"content-encoding\"] as string,\n          });\n\n          // Update input value with parsed body\n          const updatedInputValue: HttpServerInputValue = {\n            ...inputValue,\n            body: encodedBody,\n            bodySize: bodyBuffer.length,\n          };\n\n          if (onBodyCaptured) {\n            onBodyCaptured(updatedInputValue);\n          }\n\n          // Update the span with the complete request body information\n          SpanUtils.addSpanAttributes(spanInfo.span, {\n            inputValue: updatedInputValue,\n            inputSchemaMerges: {\n              ...schemaMerges,\n              body: {\n                encoding: EncodingType.BASE64,\n                decodedType: getDecodedType(req.headers[\"content-type\"] || \"\"),\n              },\n            },\n          });\n\n          logger.debug(\n            `[HttpInstrumentation] Captured request body for ${req.method} ${req.url}: ${bodyBuffer.length} bytes`,\n          );\n        } catch (error) {\n          logger.error(`[HttpInstrumentation] Error processing request body:`, error);\n        }\n      }\n    });\n  }\n\n  private _captureClientRequestBody(\n    req: ClientRequest,\n    spanInfo: SpanInfo,\n    inputValue: HttpClientInputValue,\n    schemaMerges: SchemaMerges | undefined,\n    onBodyCaptured?: (updatedInputValue: HttpClientInputValue) => void,\n  ): void {\n    const requestBodyChunks: (string | Buffer)[] = [];\n    let requestBodyCaptured = false;\n\n    // Patch the write method to capture request body\n    const originalWrite = req.write?.bind(req);\n    if (originalWrite) {\n      req.write = function (chunk: any, encoding?: any, callback?: any): boolean {\n        if (chunk && !requestBodyCaptured) {\n          requestBodyChunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk, encoding));\n        }\n        return originalWrite.call(this, chunk, encoding, callback);\n      };\n    }\n\n    // Patch the end method to capture final request body and process it\n    const originalEnd = req.end?.bind(req);\n    if (originalEnd) {\n      req.end = function (chunk?: any, encoding?: any, callback?: any): ClientRequest {\n        // Capture final chunk if provided\n        if (chunk && !requestBodyCaptured) {\n          requestBodyChunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk, encoding));\n        }\n\n        // Process captured request body asynchronously (don't block the request)\n        if (requestBodyChunks.length > 0 && !requestBodyCaptured) {\n          requestBodyCaptured = true;\n          (async () => {\n            try {\n              const bodyBuffer = Buffer.concat(\n                requestBodyChunks.map((chunk) =>\n                  Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk),\n                ),\n              );\n\n              // Parse the request body using existing body parser\n              const encodedBody = await httpBodyEncoder({\n                bodyBuffer,\n              });\n\n              // Update input value with parsed body\n              const updatedInputValue: HttpClientInputValue = {\n                ...inputValue,\n                body: encodedBody,\n                bodySize: bodyBuffer.length,\n              };\n\n              // Call callback to update closure variable in response handler\n              if (onBodyCaptured) {\n                onBodyCaptured(updatedInputValue);\n              }\n\n              // Update the span with the complete request body information\n              SpanUtils.addSpanAttributes(spanInfo.span, {\n                inputValue: updatedInputValue,\n                inputSchemaMerges: {\n                  ...schemaMerges,\n                  body: {\n                    encoding: EncodingType.BASE64,\n                    decodedType: getDecodedType(\n                      (inputValue.headers[\"content-type\"] as string | string[]) || \"\",\n                    ),\n                  },\n                },\n              });\n\n              logger.debug(\n                `[HttpInstrumentation] Captured request body for ${req.method} ${req.path}: ${bodyBuffer.length} bytes`,\n              );\n            } catch (error) {\n              logger.error(`[HttpInstrumentation] Error processing request body:`, error);\n            }\n          })();\n        }\n\n        return originalEnd.call(this, chunk, encoding, callback);\n      };\n    }\n  }\n\n  /*\n   * This is the main function that executes a real HTTP request with proper span handling\n   * Should be passed to SpanExecutor.createAndExecuteSpan\n   */\n  private _handleOutboundRequestInSpan(\n    originalRequest: Function,\n    args: any[],\n    spanInfo: SpanInfo,\n    inputValue: HttpClientInputValue,\n    schemaMerges: SchemaMerges | undefined,\n  ) {\n    const req = originalRequest.apply(this, args);\n\n    // Track the complete input value (will be updated when body is captured)\n    let completeInputValue = inputValue;\n\n    // NOTE: This is a patch to capture the request body\n    // This is necessary because ClientRequest doesn't have a .body property - we need to capture it from the stream\n    // This patches req.write() and listens for 'data'/'end' events to collect body chunks as they arrive\n    // Handles both write() consumption and pipe/stream consumption patterns used by different frameworks\n    this._captureClientRequestBody(req, spanInfo, inputValue, schemaMerges, (updatedInputValue) => {\n      completeInputValue = updatedInputValue;\n    });\n\n    // Add event listeners to track request/response within span context\n    req.on(\"response\", (res: IncomingMessage) => {\n      logger.debug(\n        `[HttpInstrumentation] HTTP response received: ${res.statusCode} (${SpanUtils.getTraceInfo()})`,\n      );\n\n      // Build basic output value object\n      const outputValue: HttpClientOutputValue = {\n        statusCode: res.statusCode,\n        statusMessage: res.statusMessage,\n        headers: this._captureHeadersFromRawHeaders(res.rawHeaders),\n        httpVersion: res.httpVersion,\n        httpVersionMajor: res.httpVersionMajor,\n        httpVersionMinor: res.httpVersionMinor,\n        complete: res.complete,\n        readable: res.readable,\n      };\n\n      // Capture response body using dual-mode consumption strategy\n      // This handles both read() and pipe() consumption patterns\n      const responseChunks: Buffer[] = [];\n      let streamConsumptionMode: \"NOT_CONSUMING\" | \"READ\" | \"PIPE\" = \"NOT_CONSUMING\";\n\n      // Patch res.read to capture body chunks when application calls read()\n      const originalRead = res.read?.bind(res);\n      if (originalRead) {\n        res.read = function read(size?: number) {\n          const chunk = originalRead(size);\n          if (\n            chunk &&\n            (streamConsumptionMode === \"READ\" || streamConsumptionMode === \"NOT_CONSUMING\")\n          ) {\n            streamConsumptionMode = \"READ\";\n            responseChunks.push(Buffer.from(chunk));\n          }\n          return chunk;\n        };\n      }\n\n      // Listen for 'resume' event to know when streaming starts\n      res.once(\"resume\", () => {\n        res.on(\"data\", (chunk: string | Buffer) => {\n          if (\n            chunk &&\n            (streamConsumptionMode === \"PIPE\" || streamConsumptionMode === \"NOT_CONSUMING\")\n          ) {\n            streamConsumptionMode = \"PIPE\";\n            responseChunks.push(Buffer.from(chunk));\n          }\n        });\n      });\n\n      // Always attach end listener to ensure span gets ended\n      res.on(\"end\", async (chunk?: string | Buffer) => {\n        // Capture final chunk if provided\n        if (chunk && typeof chunk !== \"function\") {\n          responseChunks.push(Buffer.from(chunk));\n        }\n\n        try {\n          if (responseChunks.length > 0) {\n            // Combine all chunks into a single buffer\n            const responseBuffer = Buffer.concat(responseChunks);\n\n            // Capture raw headers before processing\n            const rawHeaders = this._captureHeadersFromRawHeaders(res.rawHeaders);\n\n            // Store the raw headers\n            outputValue.headers = rawHeaders;\n\n            // Parse response body\n            const contentEncoding = rawHeaders[\"content-encoding\"];\n            const encodedBody = await httpBodyEncoder({\n              bodyBuffer: responseBuffer,\n              contentEncoding,\n            });\n\n            // Store parsed body data\n            outputValue.body = encodedBody;\n            outputValue.bodySize = responseBuffer.length;\n          }\n\n          // Always end the span, even if there's no response body\n          this._addOutputAttributesToSpan({\n            spanInfo,\n            outputValue,\n            statusCode: res.statusCode || 1,\n            outputSchemaMerges: {\n              body: {\n                encoding: EncodingType.BASE64,\n                decodedType: getDecodedType(outputValue.headers[\"content-type\"] || \"\"),\n              },\n              headers: {\n                matchImportance: 0,\n              },\n            },\n            inputValue: completeInputValue,\n          });\n        } catch (error) {\n          logger.error(`[HttpInstrumentation] Error processing response body:`, error);\n        }\n      });\n    });\n\n    req.on(\"error\", (error: Error) => {\n      try {\n        logger.debug(\n          `[HttpInstrumentation] HTTP request error: ${error.message} (${SpanUtils.getTraceInfo()})`,\n        );\n\n        // Record the error as the output value for replay\n        const errorOutputValue: HttpClientOutputValue = {\n          headers: {},\n          httpVersion: \"1.1\",\n          httpVersionMajor: 1,\n          httpVersionMinor: 1,\n          complete: true,\n          readable: false,\n          // Add error-specific fields\n          errorName: error.name || \"UNKNOWN\",\n          errorMessage: error.message,\n        };\n\n        // Add the error output to the span so it gets recorded\n        this._addOutputAttributesToSpan({\n          spanInfo,\n          outputValue: errorOutputValue,\n          statusCode: 0,\n          outputSchemaMerges: {\n            headers: {\n              matchImportance: 0,\n            },\n          },\n          inputValue: completeInputValue,\n        });\n\n        SpanUtils.endSpan(spanInfo.span, {\n          code: SpanStatusCode.ERROR,\n          message: error.message,\n        });\n      } catch (error) {\n        logger.error(`[HttpInstrumentation] Error ending span:`, error);\n      }\n    });\n\n    return req;\n  }\n\n  /**\n   * Helper method to add output attributes to span\n   */\n  private _addOutputAttributesToSpan({\n    spanInfo,\n    outputValue,\n    statusCode,\n    outputSchemaMerges,\n    inputValue,\n  }: {\n    spanInfo: SpanInfo;\n    outputValue: HttpClientOutputValue;\n    statusCode: number;\n    outputSchemaMerges?: SchemaMerges;\n    inputValue: HttpClientInputValue;\n  }): void {\n    // Apply transforms\n    const normalizedProtocol = this._normalizeProtocol(inputValue.protocol, \"http\");\n    const spanData: HttpSpanData = {\n      traceId: spanInfo.traceId,\n      spanId: spanInfo.spanId,\n      kind: SpanKind.CLIENT,\n      protocol: normalizedProtocol,\n      inputValue,\n      outputValue,\n    };\n\n    this.transformEngine.applyTransforms(spanData);\n\n    SpanUtils.addSpanAttributes(spanInfo.span, {\n      inputValue: spanData.inputValue,\n      outputValue: spanData.outputValue,\n      outputSchemaMerges,\n      transformMetadata: spanData.transformMetadata ? spanData.transformMetadata : undefined,\n    });\n\n    // Set span status based on HTTP status\n    const status =\n      statusCode >= 400\n        ? { code: SpanStatusCode.ERROR, message: `HTTP ${statusCode}` }\n        : { code: SpanStatusCode.OK };\n\n    SpanUtils.endSpan(spanInfo.span, status);\n  }\n\n  private _captureHeadersFromRawHeaders(rawHeaders: string[]): Record<string, string> {\n    const headers: Record<string, string> = {};\n    for (let i = 0; i < rawHeaders.length; i += 2) {\n      const key = rawHeaders[i].toLowerCase();\n      const value = rawHeaders[i + 1];\n      headers[key] = value;\n    }\n    return headers;\n  }\n\n  private _getRequestPatchFn(protocol: HttpProtocol) {\n    const self = this;\n\n    return (originalRequest: Function) => {\n      return function (this: Request, ...args: any[]) {\n        // Handle both URL string and RequestOptions object\n        let requestOptions: RequestOptions;\n        if (typeof args[0] === \"string\") {\n          // Parse URL string into RequestOptions\n          const url = new URL(args[0]);\n          requestOptions = {\n            protocol: url.protocol,\n            hostname: url.hostname,\n            port: url.port ? parseInt(url.port) : undefined,\n            path: url.pathname + url.search,\n            method: args[1]?.method || \"GET\",\n            headers: args[1]?.headers || {},\n          };\n        } else {\n          requestOptions = args[0] || {};\n        }\n        const method = requestOptions.method || \"GET\";\n        const requestProtocol = self._normalizeProtocol(\n          requestOptions.protocol || undefined,\n          protocol,\n        );\n\n        if (self.mode === TuskDriftMode.REPLAY) {\n          const stackTrace = captureStackTrace([\"HttpInstrumentation\"]);\n\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              // Calling with no spanInfo since this is a background request\n              // handleOutboundReplayRequest will return a 200 OK response with no mock data\n              return self.replayHooks.handleOutboundReplayRequest({\n                method,\n                requestOptions,\n                protocol: requestProtocol,\n                args,\n              });\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              // Build input value object for replay mode\n              const headers = normalizeHeaders(requestOptions.headers || {});\n              const inputValue: HttpClientInputValue = {\n                method,\n                path: requestOptions.path || undefined,\n                headers,\n                protocol: requestProtocol,\n                hostname: requestOptions.hostname || requestOptions.host || undefined,\n                port: requestOptions.port ? Number(requestOptions.port) : undefined,\n                timeout: requestOptions.timeout || undefined,\n              };\n\n              // Create span in replay mode\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalRequest.apply(this, args),\n                {\n                  name: requestOptions.path || `${requestProtocol.toUpperCase()} ${method}`,\n                  kind: SpanKind.CLIENT,\n                  packageName: requestProtocol,\n                  packageType: PackageType.HTTP,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  submodule: method,\n                  inputValue,\n                  isPreAppStart: false,\n                },\n                (spanInfo) => {\n                  return self.replayHooks.handleOutboundReplayRequest({\n                    method,\n                    requestOptions,\n                    protocol: requestProtocol,\n                    args,\n                    spanInfo,\n                    stackTrace,\n                  });\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => originalRequest.apply(this, args),\n            recordModeHandler: ({ isPreAppStart }) => {\n              const headers = normalizeHeaders(requestOptions.headers || {});\n\n              // Ignore SDK's own drift export calls\n              if (\n                headers[TUSK_SKIP_HEADER] === \"true\" ||\n                isTuskDriftIngestionUrl(requestOptions.path)\n              ) {\n                return originalRequest.apply(this, args);\n              }\n\n              const inputValue: HttpClientInputValue = {\n                method,\n                path: requestOptions.path || undefined,\n                headers,\n                protocol: requestProtocol,\n                hostname: requestOptions.hostname || requestOptions.host || undefined,\n                port: requestOptions.port ? Number(requestOptions.port) : undefined,\n                timeout: requestOptions.timeout || undefined,\n              };\n\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalRequest.apply(this, args),\n                {\n                  name: requestOptions.path || `${requestProtocol.toUpperCase()} ${method}`,\n                  kind: SpanKind.CLIENT,\n                  packageName: requestProtocol,\n                  packageType: PackageType.HTTP,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  submodule: method,\n                  inputValue,\n                  inputSchemaMerges: {\n                    headers: {\n                      matchImportance: 0,\n                    },\n                  },\n                  isPreAppStart,\n                },\n                (spanInfo: SpanInfo) => {\n                  return self._handleOutboundRequestInSpan(\n                    originalRequest,\n                    args,\n                    spanInfo,\n                    inputValue,\n                    {\n                      headers: {\n                        matchImportance: 0,\n                      },\n                    },\n                  );\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          // Should never happen since we're only patching record and replay modes\n          return originalRequest.apply(this, args);\n        }\n      };\n    };\n  }\n\n  private _getGetPatchFn(protocol: HttpProtocol) {\n    const self = this;\n\n    return (originalGet: Function) => {\n      return function (this: Request, ...args: any[]) {\n        // Handle both URL string and RequestOptions object\n        let requestOptions: RequestOptions;\n        if (typeof args[0] === \"string\") {\n          // Parse URL string into RequestOptions\n          const url = new URL(args[0]);\n          requestOptions = {\n            protocol: url.protocol,\n            hostname: url.hostname,\n            port: url.port ? parseInt(url.port) : undefined,\n            path: url.pathname + url.search,\n            headers: args[1]?.headers || {},\n          };\n        } else {\n          requestOptions = args[0] || {};\n        }\n        const method = \"GET\";\n        const requestProtocol = self._normalizeProtocol(\n          requestOptions.protocol || undefined,\n          protocol,\n        );\n\n        // Handle replay mode using replay hooks (only if app is ready)\n        if (self.mode === TuskDriftMode.REPLAY) {\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              // Calling with no spanInfo since this is a background request\n              // handleOutboundReplayRequest will return a 200 OK response with no mock data\n              return self.replayHooks.handleOutboundReplayRequest({\n                method,\n                requestOptions,\n                protocol: requestProtocol,\n                args,\n              });\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              // Build input value object for replay mode\n              const headers = normalizeHeaders(requestOptions.headers || {});\n              const inputValue: HttpClientInputValue = {\n                method,\n                path: requestOptions.path || undefined,\n                headers,\n                protocol: requestProtocol,\n                hostname: requestOptions.hostname || requestOptions.host || undefined,\n                port: requestOptions.port ? Number(requestOptions.port) : undefined,\n                timeout: requestOptions.timeout || undefined,\n              };\n\n              // Create span in replay mode\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalGet.apply(this, args),\n                {\n                  name: requestOptions.path || `${requestProtocol.toUpperCase()} ${method}`,\n                  kind: SpanKind.CLIENT,\n                  packageName: requestProtocol,\n                  packageType: PackageType.HTTP,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  submodule: method,\n                  inputValue,\n                  isPreAppStart: false,\n                },\n                (spanInfo) => {\n                  return self.replayHooks.handleOutboundReplayRequest({\n                    method,\n                    requestOptions,\n                    protocol: requestProtocol,\n                    args,\n                    spanInfo,\n                  });\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => originalGet.apply(this, args),\n            recordModeHandler: ({ isPreAppStart }) => {\n              const headers = normalizeHeaders(requestOptions.headers || {});\n\n              // Ignore SDK's own drift export calls\n              if (\n                headers[TUSK_SKIP_HEADER] === \"true\" ||\n                isTuskDriftIngestionUrl(requestOptions.path)\n              ) {\n                return originalGet.apply(this, args);\n              }\n\n              const inputValue: HttpClientInputValue = {\n                method,\n                path: requestOptions.path || undefined,\n                headers,\n                protocol: requestProtocol,\n                hostname: requestOptions.hostname || requestOptions.host || undefined,\n                port: requestOptions.port ? Number(requestOptions.port) : undefined,\n                timeout: requestOptions.timeout || undefined,\n              };\n\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalGet.apply(this, args),\n                {\n                  name: requestOptions.path || `${requestProtocol.toUpperCase()} ${method}`,\n                  kind: SpanKind.CLIENT,\n                  packageName: requestProtocol,\n                  packageType: PackageType.HTTP,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  submodule: method,\n                  inputValue,\n                  inputSchemaMerges: {\n                    headers: {\n                      matchImportance: 0,\n                    },\n                  },\n                  isPreAppStart,\n                },\n                (spanInfo: SpanInfo) => {\n                  return self._handleOutboundRequestInSpan(\n                    originalGet,\n                    args,\n                    spanInfo,\n                    inputValue,\n                    {\n                      headers: {\n                        matchImportance: 0,\n                      },\n                    },\n                  );\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          // Should never happen since we're only patching record and replay modes\n          return originalGet.apply(this, args);\n        }\n      };\n    };\n  }\n\n  private _getServerEmitPatchFn(protocol: HttpProtocol) {\n    const self = this;\n\n    return (originalEmit: Function) => {\n      return function (this: Server, eventName: string, ...args: any[]) {\n        if (eventName === \"request\") {\n          // Sample as soon as we can to avoid additional overhead if this request is not sampled\n          if (self.mode === TuskDriftMode.RECORD) {\n            if (\n              !shouldSample({\n                samplingRate: self.tuskDrift.getSamplingRate(),\n                isAppReady: self.tuskDrift.isAppReady(),\n              })\n            ) {\n              return originalEmit.apply(this, [eventName, ...args]);\n            }\n          }\n\n          const req = args[0];\n          const res = args[1];\n\n          return self._createServerSpan({\n            req,\n            res,\n            originalHandler: () => {\n              return originalEmit.apply(this, [eventName, ...args]);\n            },\n            protocol,\n          });\n        }\n\n        return originalEmit.apply(this, [eventName, ...args]);\n      };\n    };\n  }\n\n  private _normalizeProtocol(protocol: string | undefined, fallback: HttpProtocol): HttpProtocol {\n    if (!protocol) {\n      return fallback;\n    }\n\n    const normalized = protocol.toLowerCase().replace(/:$/, \"\");\n    if (normalized === \"http\" || normalized === \"https\") {\n      return normalized;\n    }\n\n    return fallback;\n  }\n\n  private _wrap(\n    target: HttpModuleExports | HttpsModuleExports | Server,\n    propertyName: string,\n    wrapper: (original: Function) => Function,\n  ): Function | void {\n    return wrap(target, propertyName, wrapper);\n  }\n}\n","import { TdInstrumentationBase } from \"../../core/baseClasses/TdInstrumentationBase\";\nimport { TdInstrumentationNodeModule } from \"../../core/baseClasses/TdInstrumentationNodeModule\";\nimport { SpanUtils, SpanInfo } from \"../../../core/tracing/SpanUtils\";\nimport { TuskDriftCore, TuskDriftMode } from \"../../../core/TuskDrift\";\nimport { EnvVarTracker } from \"../../core/trackers\";\nimport { TdInstrumentationConfig } from \"../../core/baseClasses/TdInstrumentationAbstract\";\nimport { logger } from \"../../../core/utils/logger\";\n\nexport interface EnvInstrumentationConfig extends TdInstrumentationConfig {\n  mode?: TuskDriftMode;\n}\n\n/**\n * Environment variable instrumentation that records and replays process.env access.\n * In record mode, captures environment variable values.\n * In replay mode, returns previously recorded values for deterministic behavior.\n */\nexport class EnvInstrumentation extends TdInstrumentationBase {\n  private mode: TuskDriftMode;\n  private originalProcessEnv?: typeof process.env;\n  private isInPatchedCall = false;\n\n  constructor(config: EnvInstrumentationConfig = {}) {\n    super(\"env\", config);\n    this.mode = config.mode || TuskDriftMode.DISABLED;\n  }\n\n  init(): TdInstrumentationNodeModule[] {\n    // Environment variables are global, not a module, so we patch process.env directly\n    this.patchProcessEnv();\n    return [];\n  }\n\n  private patchProcessEnv(): void {\n    // Unlike other instrumentations that patch modules when they're required (lazy patching),\n    // env var instrumentation patches process.env immediately during init() since process.env\n    // is a global object, not a module. This means we need to explicitly check if the\n    // instrumentation is enabled before patching, otherwise we'd always patch process.env\n    // even when the user has disabled env var recording via enable_env_var_recording config.\n    if (this.mode === TuskDriftMode.DISABLED || !this._config.enabled) {\n      return;\n    }\n\n    this.originalProcessEnv = process.env;\n\n    // Create a proxy around process.env\n    const envProxy = new Proxy(this.originalProcessEnv, {\n      get: (target, property, receiver) => {\n        return this._handleEnvAccess(target, property as string);\n      },\n      set: (target, property, value, receiver) => {\n        // Allow setting env vars normally\n        target[property as string] = value;\n        return true;\n      },\n      deleteProperty: (target, property) => {\n        delete target[property as string];\n        return true;\n      },\n      ownKeys: (target) => {\n        return Reflect.ownKeys(target);\n      },\n      getOwnPropertyDescriptor: (target, property) => {\n        return Reflect.getOwnPropertyDescriptor(target, property);\n      },\n      has: (target, property) => {\n        return Reflect.has(target, property);\n      },\n    });\n\n    // Replace global process.env with our proxy\n    process.env = envProxy;\n  }\n\n  private _handleEnvAccess(target: typeof process.env, key: string): string | undefined {\n    // Prevent recursion\n    if (this.isInPatchedCall) {\n      return target[key];\n    }\n\n    if (!TuskDriftCore.getInstance().isAppReady()) {\n      // Want to use the original process.env when app is in process of starting up\n      return target[key];\n    }\n\n    this.isInPatchedCall = true;\n    try {\n      return this._handleEnvAccessInMode(target, key);\n    } finally {\n      this.isInPatchedCall = false;\n    }\n  }\n\n  private _handleEnvAccessInMode(target: typeof process.env, key: string): string | undefined {\n    let currentSpanInfo: SpanInfo | null = null;\n    try {\n      currentSpanInfo = SpanUtils.getCurrentSpanInfo();\n    } catch (error) {\n      logger.error(`EnvInstrumentation error getting current span info:`, error);\n    }\n\n    if (!currentSpanInfo) {\n      return target[key];\n    }\n\n    if (this.mode === TuskDriftMode.REPLAY) {\n      return this._handleReplayMode(target, key);\n    } else if (this.mode === TuskDriftMode.RECORD) {\n      return this._handleRecordMode(currentSpanInfo, target, key);\n    } else {\n      return target[key];\n    }\n  }\n\n  private _handleReplayMode(target: typeof process.env, key: string): string | undefined {\n    const replayTraceId = SpanUtils.getCurrentReplayTraceId();\n    if (!replayTraceId) {\n      return target[key];\n    }\n\n    const envVar = EnvVarTracker.getEnvVar(replayTraceId, key);\n    if (envVar) {\n      logger.debug(`Returning env var ${key} for trace ${replayTraceId}: ${envVar}`);\n      return envVar;\n    }\n\n    return target[key];\n  }\n\n  private _handleRecordMode(\n    spanInfo: SpanInfo,\n    target: typeof process.env,\n    key: string,\n  ): string | undefined {\n    try {\n      EnvVarTracker.setEnvVar({\n        traceId: spanInfo.traceId,\n        key,\n        value: target[key] || undefined,\n      });\n    } catch (error) {\n      logger.error(`EnvInstrumentation error storing env var:`, error);\n    }\n    return target[key];\n  }\n}\n","import { TdInstrumentationBase } from \"../../core/baseClasses/TdInstrumentationBase\";\nimport { TdInstrumentationNodeModule } from \"../../core/baseClasses/TdInstrumentationNodeModule\";\nimport { SpanUtils } from \"../../../core/tracing/SpanUtils\";\nimport { SpanKind } from \"@opentelemetry/api\";\nimport { TuskDriftMode } from \"../../../core/TuskDrift\";\nimport { SPAN_KIND_CONTEXT_KEY } from \"../../../core/types\";\nimport { wrap } from \"../../core/utils\";\nimport { DateInstrumentationConfig } from \"./types\";\nimport { DateTracker } from \"../../core/trackers\";\nimport { logger } from \"../../../core/utils/logger\";\n\n/**\n * Date instrumentation that provides consistent dates in replay mode.\n * In replay mode, new Date() calls return the latest mock response timestamp.\n *\n * Note: this probably won't match exactly to the milliseconds, but it will be very close to date the application probably expects\n */\nexport class DateInstrumentation extends TdInstrumentationBase {\n  private mode: TuskDriftMode;\n  private originalDate?: typeof Date;\n  private isInPatchedCall = false;\n  private static instance: DateInstrumentation;\n\n  constructor(config: DateInstrumentationConfig = {}) {\n    super(\"date\", config);\n    this.mode = config.mode || TuskDriftMode.DISABLED;\n    DateInstrumentation.instance = this;\n  }\n\n  init(): TdInstrumentationNodeModule[] {\n    // Date is a global, not a module, so we patch it directly\n    this.patchGlobalDate();\n    return [];\n  }\n\n  private patchGlobalDate(): void {\n    // Unlike other instrumentations that patch modules when they're required (lazy patching),\n    // date instrumentation patches the global Date function immediately during init() since\n    // Date is a global API, not a module. This means we need to explicitly check if the\n    // instrumentation is enabled before patching, otherwise we'd always patch globalThis.Date\n    // even when the user has disabled date instrumentation.\n    if (this.mode === TuskDriftMode.DISABLED || !this._config.enabled) {\n      return;\n    }\n\n    this.originalDate = globalThis.Date;\n\n    const _TdDate = this._wrap(globalThis, \"Date\", this.getDatePatchFn());\n\n    // Copy static methods\n    _TdDate.now = function (): number {\n      return new _TdDate().getTime();\n    };\n    _TdDate.parse = this.originalDate!.parse.bind(this.originalDate!);\n    _TdDate.UTC = this.originalDate!.UTC.bind(this.originalDate!);\n\n    // Set up prototype chain\n    Object.setPrototypeOf(_TdDate.prototype, this.originalDate!.prototype);\n    Object.defineProperty(_TdDate, Symbol.hasInstance, {\n      value: (instance: any) => instance instanceof this.originalDate!,\n    });\n\n    logger.debug(\"Global Date patching complete\");\n  }\n\n  static getOriginalDate(): Date | string {\n    return new DateInstrumentation.instance.originalDate!();\n  }\n\n  private _handleDateCall(args: any[], isConstructorCall: boolean): Date | string {\n    // Prevent recursion\n    if (this.isInPatchedCall) {\n      return this._callOriginalDate(args, isConstructorCall);\n    }\n\n    // Only handle replay mode, pass through everything else\n    if (this.mode !== TuskDriftMode.REPLAY) {\n      return this._callOriginalDate(args, isConstructorCall);\n    }\n\n    const currentSpanInfo = SpanUtils.getCurrentSpanInfo();\n    if (!currentSpanInfo) {\n      return this._callOriginalDate(args, isConstructorCall);\n    }\n\n    // We only want to replace Date calls from server spans\n    const spanKind = currentSpanInfo.context.getValue(SPAN_KIND_CONTEXT_KEY);\n    if (spanKind !== SpanKind.SERVER) {\n      return this._callOriginalDate(args, isConstructorCall);\n    }\n\n    this.isInPatchedCall = true;\n    try {\n      return this._handleReplayDate(args, isConstructorCall);\n    } finally {\n      this.isInPatchedCall = false;\n    }\n  }\n\n  private _handleReplayDate(args: any[], isConstructorCall: boolean): Date | string {\n    // If new Date() is called without arguments, use the latest timestamp from trace\n    if (args.length === 0) {\n      const latestDate = DateTracker.getCurrentTraceLatestDate();\n      if (latestDate) {\n        logger.debug(\n          `Replacing new Date() with latest trace timestamp: ${latestDate.toISOString()}`,\n        );\n        return isConstructorCall\n          ? new this.originalDate!(latestDate.getTime())\n          : latestDate.toString();\n      }\n    }\n\n    // For all other cases (Date with arguments), use original behavior\n    return this._callOriginalDate(args, isConstructorCall);\n  }\n\n  private _callOriginalDate(args: any[], isConstructorCall: boolean): Date | string {\n    if (isConstructorCall) {\n      if (args.length === 0) {\n        return new this.originalDate!();\n      }\n      return new (this.originalDate as any)(...args);\n    } else {\n      // Function call: Date() - should return string\n      return new this.originalDate!().toString();\n    }\n  }\n\n  private getDatePatchFn() {\n    const self = this;\n    return (OriginalDate: typeof Date) => {\n      function _TdDate(this: any, ...args: any[]): Date | string {\n        const isConstructorCall = new.target !== undefined;\n\n        // If this is a subclass constructor call, use Reflect.construct to properly\n        // create an instance of the subclass with the correct prototype chain\n        if (isConstructorCall && new.target !== _TdDate && new.target !== globalThis.Date) {\n          logger.debug(`Using Reflect.construct for subclass: ${new.target?.name}`);\n          // Reflect.construct(target, args, newTarget) does three things:\n          // 1. Calls the original Date constructor with the provided arguments\n          // 2. Sets up the instance with newTarget's prototype (e.g., PreciseDate.prototype)\n          // 3. Returns a properly constructed instance of the subclass with all its methods intact\n          // This ensures that new PreciseDate() returns a PreciseDate instance, not just a Date\n          return Reflect.construct(self.originalDate!, args, new.target);\n        }\n\n        return self._handleDateCall(args, isConstructorCall);\n      }\n      return _TdDate;\n    };\n  }\n\n  private _wrap(target: any, propertyName: string, wrapper: (original: any) => any): any {\n    wrap(target, propertyName, wrapper);\n    return target[propertyName];\n  }\n}\n","import { normalize } from \"path\";\n\nexport type PatchFunction = (moduleExports: any, moduleVersion?: string) => any;\n\nexport class TdInstrumentationNodeModuleFile {\n  name: string;\n  supportedVersions: string[];\n  patch: PatchFunction;\n  moduleExports?: any;\n\n  constructor({\n    name,\n    supportedVersions,\n    patch,\n  }: {\n    name: string;\n    supportedVersions: string[];\n    patch: PatchFunction;\n  }) {\n    this.name = normalize(name);\n    this.supportedVersions = supportedVersions;\n    this.patch = patch;\n  }\n}\n","interface GraphQLTypeNode {\n  kind: string;\n  type?: GraphQLTypeNode;\n  name?: { value: string };\n}\n\ninterface GraphQLVariableDefinition {\n  variable?: { name?: { value: string } };\n  type?: GraphQLTypeNode;\n}\n\ninterface GraphQLSelectionSet {\n  selections: GraphQLSelection[];\n}\n\ninterface GraphQLSelection {\n  kind: string;\n  name?: { value: string };\n  alias?: { value: string };\n  selectionSet?: GraphQLSelectionSet;\n  arguments?: GraphQLArgument[];\n  directives?: GraphQLDirective[];\n}\n\ninterface GraphQLArgument {\n  kind: string;\n  value?: any;\n}\n\ninterface GraphQLDirective {\n  arguments: GraphQLArgument[];\n}\n\ninterface GraphQLOperationDefinition {\n  kind: string;\n  operation: string;\n  name?: { value: string };\n  variableDefinitions?: GraphQLVariableDefinition[];\n  selectionSet: GraphQLSelectionSet;\n}\n\ninterface GraphQLExecutionArgs {\n  document: { definitions: any[] };\n  variableValues?: any;\n  operationName?: string;\n}\n\nexport const getOperationDefinition = (\n  payload: GraphQLExecutionArgs,\n): GraphQLOperationDefinition | undefined =>\n  payload.document.definitions.find(\n    (definition: any) => definition?.kind === \"OperationDefinition\",\n  ) as GraphQLOperationDefinition | undefined;\n","import { TdInstrumentationBase } from \"../../core/baseClasses/TdInstrumentationBase\";\nimport { TdInstrumentationNodeModule } from \"../../core/baseClasses/TdInstrumentationNodeModule\";\nimport { TdInstrumentationConfig } from \"../../core/baseClasses/TdInstrumentationAbstract\";\nimport { TdInstrumentationNodeModuleFile } from \"../../core/baseClasses/TdInstrumentationNodeModuleFile\";\nimport { SpanUtils, SpanInfo } from \"../../../core/tracing/SpanUtils\";\nimport { TuskDriftCore, TuskDriftMode } from \"../../../core/TuskDrift\";\nimport { wrap } from \"../../core/utils\";\nimport { getOperationDefinition } from \"./utils\";\nimport { PackageType } from \"@use-tusk/drift-schemas/core/span\";\nimport { Span } from \"@opentelemetry/api\";\nimport { logger } from \"../../../core/utils/logger\";\n\nexport interface GraphqlInstrumentationConfig extends TdInstrumentationConfig {\n  mode?: TuskDriftMode;\n}\n\n/**\n * GraphQL is instrumented purely for presentational metadata.\n * We do not replay GraphQL operations.\n *\n * Behavior:\n * - REPLAY mode: Just call original functions (no patching)\n * - RECORD mode: Intercept GraphQL execute calls and add presentational metadata to parent HTTP spans\n *   - Add presentational metadata to parent HTTP spans\n *   - Always call original GraphQL functions\n */\nexport class GraphqlInstrumentation extends TdInstrumentationBase {\n  private tuskDrift: TuskDriftCore;\n\n  constructor(config: GraphqlInstrumentationConfig = {}) {\n    super(\"graphql\", config);\n    this.tuskDrift = TuskDriftCore.getInstance();\n  }\n\n  init(): TdInstrumentationNodeModule[] {\n    // Patch GraphQL v16\n    const patchGraphqlExecuteV16 = new TdInstrumentationNodeModuleFile({\n      name: \"graphql/execution/execute.js\",\n      supportedVersions: [\"16.*\"],\n      // Graphql v16 deprecated executeSync\n      patch: (moduleExports: any) => {\n        this._wrap(moduleExports, \"execute\", this._patchExecuteFn());\n        return moduleExports;\n      },\n    });\n\n    // Patch GraphQL v15\n    const patchGraphqlExecuteV15 = new TdInstrumentationNodeModuleFile({\n      name: \"graphql/execution/execute.js\",\n      supportedVersions: [\"15.*\"],\n      patch: (moduleExports: any) => {\n        this._wrap(moduleExports, \"execute\", this._patchExecuteFn());\n        this._wrap(moduleExports, \"executeSync\", this._patchExecuteFn());\n        return moduleExports;\n      },\n    });\n\n    const moduleGraphqlV16 = new TdInstrumentationNodeModule({\n      name: \"graphql\",\n      supportedVersions: [\"16.*\"],\n      patch: (moduleExports: any) => moduleExports,\n      // execute doesn't exist in the main module export\n      // Hence we patch the files directly\n      files: [patchGraphqlExecuteV16],\n    });\n\n    const moduleGraphqlV15 = new TdInstrumentationNodeModule({\n      name: \"graphql\",\n      supportedVersions: [\"15.*\"],\n      patch: (moduleExports: any) => moduleExports,\n      // execute and executeSync don't exist in the main module export\n      // Hence we patch the files directly\n      files: [patchGraphqlExecuteV15],\n    });\n\n    return [moduleGraphqlV15, moduleGraphqlV16];\n  }\n\n  /**\n   * Patch GraphQL execute function to add metadata to parent HTTP server spans\n   */\n  private _patchExecuteFn() {\n    const self = this;\n    return (originalExecute: any) => {\n      return function execute(this: any, ...args: any[]) {\n        return self._handleGraphQLExecution(\"execute\", originalExecute, args, this);\n      };\n    };\n  }\n\n  /**\n   * Handle GraphQL execution - add metadata to parent server span if present\n   */\n  private _handleGraphQLExecution(\n    methodName: string,\n    originalMethod: Function,\n    args: any[],\n    context: any,\n  ): any {\n    if (this.tuskDrift.getMode() !== TuskDriftMode.RECORD) {\n      logger.debug(`[GraphQLInstrumentation] Not in RECORD mode, skipping instrumentation`);\n      return originalMethod.apply(context, args);\n    }\n\n    let currentSpanInfo: SpanInfo | null = null;\n    try {\n      currentSpanInfo = SpanUtils.getCurrentSpanInfo();\n    } catch (error) {\n      logger.error(`[GraphQLInstrumentation] error getting current span info:`, error);\n    }\n\n    if (!currentSpanInfo) {\n      logger.debug(\n        `[GraphQLInstrumentation] No current span found for ${methodName}, calling original`,\n      );\n      return originalMethod.apply(context, args);\n    }\n\n    try {\n      logger.debug(`[GraphQLInstrumentation] Update span attributes with GraphQL info`);\n      this._addGraphQLMetadataToSpan(currentSpanInfo.span, args);\n    } catch (error) {\n      logger.warn(\n        `[GraphQLInstrumentation] Failed to update span attributes with GraphQL info:`,\n        error,\n      );\n    }\n\n    return originalMethod.apply(context, args);\n  }\n\n  /**\n   * Extract GraphQL metadata from execution args and add to span\n   */\n  private _addGraphQLMetadataToSpan(span: Span, args: any[]): void {\n    const [executionArgs] = args;\n\n    if (!executionArgs || !executionArgs.document) {\n      logger.warn(`[GraphQLInstrumentation] No execution args or document found`);\n      return;\n    }\n\n    try {\n      // Extract operation information\n      const operationDef = getOperationDefinition(executionArgs);\n      const operationType = operationDef?.operation || \"query\";\n      const operationName = executionArgs.operationName || operationDef?.name?.value || \"Anonymous\";\n\n      SpanUtils.addSpanAttributes(span, {\n        name: `${operationType} ${operationName}`,\n        packageType: PackageType.GRAPHQL,\n      });\n    } catch (error) {\n      logger.warn(`[GraphQLInstrumentation] Error extracting GraphQL metadata:`, error);\n    }\n  }\n\n  private _wrap(target: any, propertyName: string, wrapper: (original: any) => any): void {\n    wrap(target, propertyName, wrapper);\n  }\n}\n","import { EventEmitter } from \"events\";\nimport { PgInstrumentation } from \"../Instrumentation\";\nimport { createMockInputValue } from \"../../../../core/utils\";\nimport { SpanInfo } from \"../../../../core/tracing/SpanUtils\";\nimport { logger } from \"../../../../core/utils/logger\";\nimport { captureStackTrace } from \"src/instrumentation/core/utils\";\n\n/**\n * Mock PostgreSQL client for replay mode\n * Extends EventEmitter to properly handle all client methods and events\n */\nexport class TdPgClientMock extends EventEmitter {\n  private pgInstrumentation: PgInstrumentation;\n  private spanInfo?: SpanInfo;\n\n  constructor(pgInstrumentation: PgInstrumentation, spanInfo?: SpanInfo) {\n    super();\n    this.pgInstrumentation = pgInstrumentation;\n    this.spanInfo = spanInfo;\n  }\n\n  query(...args: any[]) {\n    logger.debug(`[TdPgClientMock] Mock pool client query intercepted in REPLAY mode`);\n\n    const stackTrace = captureStackTrace([\"TdPgClientMock\"]);\n\n    // Parse query arguments similar to the main query patch\n    const queryConfig = this.pgInstrumentation.parseQueryArgs(args);\n\n    if (!queryConfig || !queryConfig.text) {\n      logger.debug(`[TdPgClientMock] Could not parse mock client query, returning empty result`);\n      return Promise.resolve({ rows: [], rowCount: 0 });\n    }\n\n    const rawInputValue = {\n      text: queryConfig.text,\n      values: queryConfig.values || [],\n      clientType: \"client\",\n    };\n\n    const inputValue = createMockInputValue(rawInputValue);\n\n    if (this.spanInfo) {\n      return this.pgInstrumentation.handleReplayQuery(\n        queryConfig,\n        inputValue,\n        this.spanInfo,\n        stackTrace,\n      );\n    } else {\n      // Background query\n      // Return an EventEmitter that immediately completes with empty results\n      return this.pgInstrumentation.handleNoOpReplayQuery(queryConfig);\n    }\n  }\n\n  release() {\n    // No-op for pool client release - just emit end event to simulate normal behavior\n    this.emit(\"end\");\n  }\n\n  end() {\n    this.emit(\"end\");\n    return Promise.resolve();\n  }\n\n  connect(callback?: Function) {\n    // Mock connect - already connected\n    if (callback) {\n      process.nextTick(() => callback(null));\n      return;\n    }\n    return Promise.resolve();\n  }\n\n  // Additional pg Client properties and methods that might be expected by ORMs\n  get connectionParameters() {\n    return {\n      host: \"localhost\",\n      port: 5432,\n      database: \"mock\",\n      user: \"mock\",\n    };\n  }\n\n  get readyForQuery() {\n    return true;\n  }\n\n  get processID() {\n    return 12345;\n  }\n\n  get secretKey() {\n    return 67890;\n  }\n\n  get activeQuery() {\n    return false;\n  }\n\n  pauseDrain() {\n    // No-op\n  }\n\n  resumeDrain() {\n    // No-op\n  }\n\n  escapeIdentifier(str: string) {\n    return `\"${str.replace(/\"/g, '\"\"')}\"`;\n  }\n\n  escapeLiteral(str: string) {\n    return `'${str.replace(/'/g, \"''\")}'`;\n  }\n}\n","import { TdInstrumentationBase } from \"../../core/baseClasses/TdInstrumentationBase\";\nimport { TdInstrumentationNodeModule } from \"../../core/baseClasses/TdInstrumentationNodeModule\";\nimport { SpanUtils, SpanInfo } from \"../../../core/tracing/SpanUtils\";\nimport { SpanKind, SpanStatusCode } from \"@opentelemetry/api\";\nimport { TuskDriftCore, TuskDriftMode } from \"../../../core/TuskDrift\";\nimport { captureStackTrace, wrap } from \"../../core/utils\";\nimport { TdPgClientMock } from \"./mocks/TdPgClientMock\";\nimport { findMockResponseAsync } from \"../../core/utils/mockResponseUtils\";\nimport { handleRecordMode, handleReplayMode } from \"../../core/utils/modeUtils\";\nimport {\n  PgModuleExports,\n  PgPoolModuleExports,\n  PgClientInputValue,\n  PgInstrumentationConfig,\n  QueryConfig,\n  PgResult,\n} from \"./types\";\n// NOTE: these types are from version 8.15.5 of pg\n// Older versions of pg may have different types, but this is fine for now\nimport type { Connection, Query, Pool, PoolClient, Client } from \"pg\";\nimport { PackageType } from \"@use-tusk/drift-schemas/core/span\";\nimport { logger } from \"../../../core/utils/logger\";\n\nexport class PgInstrumentation extends TdInstrumentationBase {\n  private readonly INSTRUMENTATION_NAME = \"PgInstrumentation\";\n  private mode: TuskDriftMode;\n  private tuskDrift: TuskDriftCore;\n\n  constructor(config: PgInstrumentationConfig = {}) {\n    super(\"pg\", config);\n    this.mode = config.mode || TuskDriftMode.DISABLED;\n    this.tuskDrift = TuskDriftCore.getInstance();\n  }\n\n  init(): TdInstrumentationNodeModule[] {\n    return [\n      new TdInstrumentationNodeModule({\n        name: \"pg\",\n        supportedVersions: [\"8.*\"],\n        patch: (moduleExports: PgModuleExports) => this._patchPgModule(moduleExports),\n      }),\n      new TdInstrumentationNodeModule({\n        name: \"pg-pool\",\n        supportedVersions: [\"2.*\", \"3.*\"],\n        patch: (moduleExports: PgPoolModuleExports) => this._patchPgPoolModule(moduleExports),\n      }),\n      // TODO: instrument pg-cursor\n    ];\n  }\n\n  private _patchPgModule(pgModule: PgModuleExports): PgModuleExports {\n    logger.debug(`[PgInstrumentation] Patching PG module in ${this.mode} mode`);\n\n    if (this.isModulePatched(pgModule)) {\n      logger.debug(`[PgInstrumentation] PG module already patched, skipping`);\n      return pgModule;\n    }\n\n    // Wrap Client.prototype.query\n    if (pgModule.Client && pgModule.Client.prototype) {\n      this._wrap(pgModule.Client.prototype, \"query\", this._getQueryPatchFn(\"client\"));\n      logger.debug(`[PgInstrumentation] Wrapped Client.prototype.query`);\n    }\n\n    // Wrap Client.prototype.connect\n    if (pgModule.Client && pgModule.Client.prototype) {\n      this._wrap(pgModule.Client.prototype, \"connect\", this._getConnectPatchFn(\"client\"));\n      logger.debug(`[PgInstrumentation] Wrapped Client.prototype.connect`);\n    }\n\n    this.markModuleAsPatched(pgModule);\n    logger.debug(`[PgInstrumentation] PG module patching complete`);\n\n    return pgModule;\n  }\n\n  private _getQueryPatchFn(clientType: string) {\n    const self = this;\n\n    return (originalQuery: Function) => {\n      return function query(this: Query, ...args: any[]) {\n        // Parse query arguments - pg supports multiple signatures\n        let queryConfig: QueryConfig | null = null;\n        try {\n          queryConfig = self.parseQueryArgs(args);\n        } catch (error) {\n          logger.error(`[PgInstrumentation] error parsing query args:`, error);\n        }\n\n        if (!queryConfig || !queryConfig.text) {\n          // If we can't parse the query, let it pass through\n          logger.debug(`[PgInstrumentation] Could not parse query, returning`, args);\n          return originalQuery.apply(this, args);\n        }\n\n        const inputValue: PgClientInputValue = {\n          text: queryConfig.text,\n          values: queryConfig.values || [],\n          clientType,\n        };\n\n        // Handle replay mode (only if app is ready)\n        if (self.mode === TuskDriftMode.REPLAY) {\n          const stackTrace = captureStackTrace([\"PgInstrumentation\"]);\n\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              return self.handleNoOpReplayQuery(queryConfig);\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              // Create span in replay mode\n              const packageName = inputValue.clientType === \"pool\" ? \"pg-pool\" : \"pg\";\n              const spanName = inputValue.clientType === \"pool\" ? \"pg-pool.query\" : \"pg.query\";\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalQuery.apply(this, args),\n                {\n                  name: spanName,\n                  kind: SpanKind.CLIENT,\n                  submodule: \"query\",\n                  packageType: PackageType.PG,\n                  packageName: packageName,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                },\n                (spanInfo) => {\n                  return self.handleReplayQuery(queryConfig, inputValue, spanInfo, stackTrace);\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => originalQuery.apply(this, args),\n            recordModeHandler: ({ isPreAppStart }) => {\n              // Record mode - create span and execute real query\n              // Create span for database query\n              const packageName = inputValue.clientType === \"pool\" ? \"pg-pool\" : \"pg\";\n              const spanName = inputValue.clientType === \"pool\" ? \"pg-pool.query\" : \"pg.query\";\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalQuery.apply(this, args),\n                {\n                  name: spanName,\n                  kind: SpanKind.CLIENT,\n                  submodule: \"query\",\n                  packageType: PackageType.PG,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  packageName: packageName,\n                  inputValue: inputValue,\n                  isPreAppStart,\n                },\n                (spanInfo) => {\n                  return self._handleRecordQueryInSpan(\n                    spanInfo,\n                    originalQuery,\n                    queryConfig,\n                    args,\n                    this,\n                  );\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          // Should never happen since we're only patching record and replay modes\n          return originalQuery.apply(this, args);\n        }\n      };\n    };\n  }\n\n  private _getConnectPatchFn(clientType: string) {\n    const self = this;\n\n    return (originalConnect: Function) => {\n      return function connect(this: Connection, callback?: Function) {\n        const inputValue = { clientType };\n\n        // Handle replay mode (only if app is ready)\n        if (self.mode === TuskDriftMode.REPLAY) {\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              if (callback) {\n                process.nextTick(() => callback(null));\n                return;\n              } else {\n                return Promise.resolve();\n              }\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              // Create span in replay mode\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalConnect.apply(this, [callback]),\n                {\n                  name: `pg.connect`,\n                  kind: SpanKind.CLIENT,\n                  submodule: \"connect\",\n                  packageName: \"pg\",\n                  packageType: PackageType.PG,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                },\n                (spanInfo) => {\n                  return self._handleReplayConnect(callback);\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => originalConnect.apply(this, [callback]),\n            recordModeHandler: ({ isPreAppStart }) => {\n              // Record mode - create span and execute real connect\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalConnect.apply(this, [callback]),\n                {\n                  name: `pg.connect`,\n                  kind: SpanKind.CLIENT,\n                  submodule: \"connect\",\n                  packageName: \"pg\",\n                  packageType: PackageType.PG,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart,\n                },\n                (spanInfo) => {\n                  return self._handleRecordConnectInSpan(spanInfo, originalConnect, callback, this);\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          // Should never happen since we're only patching record and replay modes\n          return originalConnect.apply(this, [callback]);\n        }\n      };\n    };\n  }\n\n  parseQueryArgs(args: any[]): QueryConfig | null {\n    if (args.length === 0) return null;\n\n    const firstArg = args[0];\n\n    // String query: query(text, values?, callback?)\n    if (typeof firstArg === \"string\") {\n      const config: QueryConfig = {\n        text: firstArg,\n        callback: typeof args[args.length - 1] === \"function\" ? args[args.length - 1] : undefined,\n      };\n      if (Array.isArray(args[1])) {\n        config.values = args[1];\n      }\n      return config;\n    }\n\n    // Query config object: query(config, callback?)\n    if (typeof firstArg === \"object\" && firstArg.text) {\n      return {\n        text: firstArg.text,\n        values: firstArg.values,\n        callback: firstArg.callback || (typeof args[1] === \"function\" ? args[1] : undefined),\n      };\n    }\n\n    return null;\n  }\n\n  private _handleRecordQueryInSpan(\n    spanInfo: SpanInfo,\n    originalQuery: Function,\n    queryConfig: QueryConfig,\n    args: any[],\n    context: Query,\n  ): Query {\n    const hasCallback = !!queryConfig.callback;\n\n    if (hasCallback) {\n      // Callback-based query\n      const originalCallback = queryConfig.callback!;\n      const wrappedCallback = (error: Error | null, result?: PgResult) => {\n        if (error) {\n          logger.debug(\n            `[PgInstrumentation] PG query error (hasCallback): ${error.message} (${SpanUtils.getTraceInfo()})`,\n          );\n          try {\n            SpanUtils.endSpan(spanInfo.span, {\n              code: SpanStatusCode.ERROR,\n              message: error.message,\n            });\n          } catch (error) {\n            logger.error(`[PgInstrumentation] error ending span:`, error);\n          }\n        } else {\n          logger.debug(\n            `[PgInstrumentation] PG query completed successfully (hasCallback) (${SpanUtils.getTraceInfo()})`,\n          );\n          try {\n            this._addOutputAttributesToSpan(spanInfo, result);\n            SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n          } catch (error) {\n            logger.error(`[PgInstrumentation] error processing response:`, error);\n          }\n        }\n        return originalCallback(error, result);\n      };\n\n      // Replace callback in args\n      try {\n        const firstArg = args[0];\n        const isConfigObject = typeof firstArg === \"object\" && firstArg.text && firstArg.callback;\n\n        if (isConfigObject) {\n          // Callback was in config object\n          const configIndex = 0; // First argument is the config\n          args[configIndex] = { ...args[configIndex], callback: wrappedCallback };\n        } else {\n          // Callback was separate argument (last argument)\n          const callbackIndex = args.findIndex((arg) => typeof arg === \"function\");\n          if (callbackIndex >= 0) {\n            args[callbackIndex] = wrappedCallback;\n          }\n        }\n      } catch (error) {\n        logger.error(`[PgInstrumentation] error replacing callback:`, error, args);\n      }\n\n      return originalQuery.apply(context, args);\n    } else {\n      // Promise-based query\n      const promise = originalQuery.apply(context, args);\n\n      return promise\n        .then((result: PgResult) => {\n          logger.debug(\n            `[PgInstrumentation] PG query completed successfully (${SpanUtils.getTraceInfo()})`,\n          );\n          try {\n            this._addOutputAttributesToSpan(spanInfo, result);\n            SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n          } catch (error) {\n            logger.error(`[PgInstrumentation] error processing response:`, error);\n          }\n          return result;\n        })\n        .catch((error: Error) => {\n          logger.debug(\n            `[PgInstrumentation] PG query error: ${error.message} (${SpanUtils.getTraceInfo()})`,\n          );\n          try {\n            SpanUtils.endSpan(spanInfo.span, {\n              code: SpanStatusCode.ERROR,\n              message: error.message,\n            });\n          } catch (error) {\n            logger.error(`[PgInstrumentation] error ending span:`, error);\n          }\n          throw error;\n        });\n    }\n  }\n\n  async handleNoOpReplayQuery(queryConfig: QueryConfig): Promise<any> {\n    const emptyResult = { rows: [], rowCount: 0 };\n    if (queryConfig.callback) {\n      process.nextTick(() => queryConfig.callback!(null, emptyResult));\n      return;\n    } else {\n      return Promise.resolve(emptyResult);\n    }\n  }\n\n  async handleReplayQuery(\n    queryConfig: QueryConfig,\n    inputValue: PgClientInputValue,\n    spanInfo: SpanInfo,\n    stackTrace?: string,\n  ): Promise<any> {\n    logger.debug(`[PgInstrumentation] Replaying PG query`);\n\n    const packageName = inputValue.clientType === \"pool\" ? \"pg-pool\" : \"pg\";\n    const spanName = inputValue.clientType === \"pool\" ? \"pg-pool.query\" : \"pg.query\";\n\n    // Look for matching recorded response\n    const mockData = await findMockResponseAsync({\n      mockRequestData: {\n        traceId: spanInfo.traceId,\n        spanId: spanInfo.spanId,\n        name: spanName,\n        inputValue: inputValue,\n        packageName: packageName,\n        instrumentationName: this.INSTRUMENTATION_NAME,\n        submoduleName: \"query\",\n        kind: SpanKind.CLIENT,\n        stackTrace,\n      },\n      tuskDrift: this.tuskDrift,\n    });\n\n    if (!mockData) {\n      const queryText = queryConfig.text || inputValue.text || \"UNKNOWN_QUERY\";\n      logger.warn(`[PgInstrumentation] No mock data found for PG query: ${queryText}`);\n      throw new Error(`[PgInstrumentation] No mock data found for PG query: ${queryText}`);\n    }\n\n    // Convert string timestamps back to Date objects based on field metadata\n    const processedResult = this.convertPostgresTypes(mockData.result);\n\n    // Return mocked response\n    if (queryConfig.callback) {\n      process.nextTick(() => {\n        queryConfig.callback!(null, processedResult);\n      });\n      return;\n    } else {\n      return Promise.resolve(processedResult);\n    }\n  }\n\n  /**\n   * Convert PostgreSQL string values back to appropriate JavaScript types\n   * based on field metadata from the recorded response.\n   *\n   * Reference for data type IDs: https://jdbc.postgresql.org/documentation/publicapi/constant-values.html\n   */\n  private convertPostgresTypes(result: any): any {\n    if (!result || !result.fields || !result.rows) {\n      return result;\n    }\n\n    // Create a map of field names to their PostgreSQL data types\n    const fieldTypeMap: Record<string, number> = {};\n    result.fields.forEach((field: any) => {\n      fieldTypeMap[field.name] = field.dataTypeID;\n    });\n\n    // Convert rows based on field types\n    const convertedRows = result.rows.map((row: any, rowIndex: number) => {\n      const convertedRow = { ...row };\n\n      Object.keys(row).forEach((fieldName) => {\n        const dataTypeID = fieldTypeMap[fieldName];\n        const value = row[fieldName];\n\n        if (value === null || value === undefined) {\n          return; // Keep null/undefined values as-is\n        }\n\n        switch (dataTypeID) {\n          case 1184: // timestamptz (timestamp with timezone)\n          case 1114: // timestamp (timestamp without timezone)\n            if (typeof value === \"string\") {\n              const dateObj = new Date(value);\n              convertedRow[fieldName] = dateObj;\n            }\n            break;\n          case 1082: // date\n            if (typeof value === \"string\") {\n              convertedRow[fieldName] = new Date(value);\n            }\n            break;\n          case 1083: // time\n          case 1266: // timetz (time with timezone)\n            // Keep time fields as strings for now, as they're not typically\n            // converted to Date objects by pg client\n            break;\n          // Add other type conversions as needed\n          default:\n            // Keep other types as-is\n            break;\n        }\n      });\n\n      return convertedRow;\n    });\n\n    const finalResult = {\n      ...result,\n      rows: convertedRows,\n    };\n\n    return finalResult;\n  }\n\n  private _handleRecordConnectInSpan(\n    spanInfo: SpanInfo,\n    originalConnect: Function,\n    callback: Function | undefined,\n    context: Connection,\n  ): Connection {\n    if (callback) {\n      // Callback-based connect\n      const wrappedCallback = (error: Error | null) => {\n        if (error) {\n          logger.debug(\n            `[PgInstrumentation] PG connect error: ${error.message} (${SpanUtils.getTraceInfo()})`,\n          );\n          try {\n            SpanUtils.endSpan(spanInfo.span, {\n              code: SpanStatusCode.ERROR,\n              message: error.message,\n            });\n          } catch (error) {\n            logger.error(`[PgInstrumentation] error ending span:`, error);\n          }\n        } else {\n          logger.debug(\n            `[PgInstrumentation] PG connect completed successfully (${SpanUtils.getTraceInfo()})`,\n          );\n          try {\n            SpanUtils.addSpanAttributes(spanInfo.span, {\n              outputValue: { connected: true },\n            });\n            SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n          } catch (error) {\n            logger.error(`[PgInstrumentation] error processing connect response:`, error);\n          }\n        }\n        return callback(error);\n      };\n\n      return originalConnect.call(context, wrappedCallback);\n    } else {\n      // Promise-based connect\n      const promise = originalConnect.call(context);\n\n      return promise\n        .then((result: Connection) => {\n          logger.debug(\n            `[PgInstrumentation] PG connect completed successfully (${SpanUtils.getTraceInfo()})`,\n          );\n          try {\n            SpanUtils.addSpanAttributes(spanInfo.span, {\n              outputValue: { connected: true },\n            });\n            SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n          } catch (error) {\n            logger.error(`[PgInstrumentation] error processing connect response:`, error);\n          }\n          return result;\n        })\n        .catch((error: Error) => {\n          logger.debug(\n            `[PgInstrumentation] PG connect error: ${error.message} (${SpanUtils.getTraceInfo()})`,\n          );\n          try {\n            SpanUtils.endSpan(spanInfo.span, {\n              code: SpanStatusCode.ERROR,\n              message: error.message,\n            });\n          } catch (error) {\n            logger.error(`[PgInstrumentation] error ending span:`, error);\n          }\n          throw error;\n        });\n    }\n  }\n\n  private _handleReplayConnect(callback?: Function) {\n    logger.debug(`[PgInstrumentation] Replaying PG connect`);\n\n    // For connect operations, just simulate success\n    if (callback) {\n      process.nextTick(() => callback(null));\n      return;\n    } else {\n      return Promise.resolve();\n    }\n  }\n\n  private _addOutputAttributesToSpan(spanInfo: SpanInfo, result?: PgResult): void {\n    if (!result) return;\n\n    const outputValue = {\n      command: result.command,\n      rowCount: result.rowCount,\n      oid: result.oid,\n      rows: result.rows || [],\n      fields: result.fields || [],\n    };\n\n    SpanUtils.addSpanAttributes(spanInfo.span, {\n      outputValue,\n    });\n  }\n\n  private _patchPgPoolModule(pgPoolModule: PgPoolModuleExports): PgPoolModuleExports {\n    if (this.isModulePatched(pgPoolModule)) {\n      logger.debug(`[PgInstrumentation] PG Pool module already patched, skipping`);\n      return pgPoolModule;\n    }\n\n    // Wrap Pool.prototype.query\n    if (pgPoolModule.prototype) {\n      this._wrap(pgPoolModule.prototype, \"query\", this._getQueryPatchFn(\"pool\"));\n      logger.debug(`[PgInstrumentation] Wrapped Pool.prototype.query`);\n    }\n\n    // Wrap Pool.prototype.connect\n    if (pgPoolModule.prototype) {\n      this._wrap(pgPoolModule.prototype, \"connect\", this._getPoolConnectPatchFn());\n      logger.debug(`[PgInstrumentation] Wrapped Pool.prototype.connect`);\n    }\n\n    this.markModuleAsPatched(pgPoolModule);\n    logger.debug(`[PgInstrumentation] PG Pool module patching complete`);\n\n    return pgPoolModule;\n  }\n\n  private _getPoolConnectPatchFn() {\n    const self = this;\n\n    return (originalConnect: Function) => {\n      return function connect(this: Connection, callback?: Function) {\n        const inputValue = { clientType: \"pool\" };\n\n        // Handle replay mode (only if app is ready)\n        if (self.mode === TuskDriftMode.REPLAY) {\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              const mockClient = new TdPgClientMock(self);\n\n              if (callback) {\n                process.nextTick(() => callback(null, mockClient, () => {}));\n                return;\n              } else {\n                return Promise.resolve(mockClient);\n              }\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalConnect.apply(this, [callback]),\n                {\n                  name: `pg-pool.connect`,\n                  kind: SpanKind.CLIENT,\n                  submodule: \"connect\",\n                  packageName: \"pg-pool\",\n                  packageType: PackageType.PG,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                },\n                (spanInfo) => {\n                  return self._handleReplayPoolConnect(spanInfo, callback);\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => originalConnect.apply(this, [callback]),\n            recordModeHandler: ({ isPreAppStart }) => {\n              // Record mode - create span and execute real connect\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalConnect.apply(this, [callback]),\n                {\n                  name: `pg-pool.connect`,\n                  kind: SpanKind.CLIENT,\n                  submodule: \"connect\",\n                  packageName: \"pg-pool\",\n                  packageType: PackageType.PG,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart,\n                },\n                (spanInfo) => {\n                  return self._handleRecordPoolConnectInSpan(\n                    spanInfo,\n                    originalConnect,\n                    callback,\n                    this,\n                  );\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          // Should never happen since we're only patching record and replay modes\n          return originalConnect.apply(this, [callback]);\n        }\n      };\n    };\n  }\n\n  private _handleRecordPoolConnectInSpan(\n    spanInfo: SpanInfo,\n    originalConnect: Function,\n    callback: Function | undefined,\n    context: Connection,\n  ): Connection {\n    if (callback) {\n      // Callback-based pool connect\n      const wrappedCallback = (error: Error | null, client?: PoolClient, done?: Function) => {\n        if (error) {\n          logger.debug(\n            `[PgInstrumentation] PG Pool connect error: ${error.message} (${SpanUtils.getTraceInfo()})`,\n          );\n          try {\n            SpanUtils.endSpan(spanInfo.span, {\n              code: SpanStatusCode.ERROR,\n              message: error.message,\n            });\n          } catch (error) {\n            logger.error(`[PgInstrumentation] error ending span:`, error);\n          }\n        } else {\n          logger.debug(\n            `[PgInstrumentation] PG Pool connect completed successfully (${SpanUtils.getTraceInfo()})`,\n          );\n          try {\n            SpanUtils.addSpanAttributes(spanInfo.span, {\n              outputValue: {\n                connected: true,\n                hasClient: !!client,\n              },\n            });\n            SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n          } catch (error) {\n            logger.error(`[PgInstrumentation] error processing pool connect response:`, error);\n          }\n        }\n        return callback(error, client, done);\n      };\n\n      return originalConnect.call(context, wrappedCallback);\n    } else {\n      // Promise-based pool connect\n      const promise = originalConnect.call(context);\n\n      return promise\n        .then((client: PoolClient) => {\n          logger.debug(\n            `[PgInstrumentation] PG Pool connect completed successfully (${SpanUtils.getTraceInfo()})`,\n          );\n          try {\n            SpanUtils.addSpanAttributes(spanInfo.span, {\n              outputValue: {\n                connected: true,\n                hasClient: !!client,\n              },\n            });\n            SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n          } catch (error) {\n            logger.error(`[PgInstrumentation] error processing pool connect response:`, error);\n          }\n          return client;\n        })\n        .catch((error: Error) => {\n          logger.debug(\n            `[PgInstrumentation] PG Pool connect error: ${error.message} (${SpanUtils.getTraceInfo()})`,\n          );\n          try {\n            SpanUtils.endSpan(spanInfo.span, {\n              code: SpanStatusCode.ERROR,\n              message: error.message,\n            });\n          } catch (error) {\n            logger.error(`[PgInstrumentation] error ending span:`, error);\n          }\n          throw error;\n        });\n    }\n  }\n\n  private _handleReplayPoolConnect(spanInfo: SpanInfo, callback?: Function) {\n    logger.debug(`[PgInstrumentation] Replaying PG Pool connect`);\n\n    // For pool connect operations, simulate returning a mock client\n    // The client's query method should also be instrumented for replay\n    const mockClient = new TdPgClientMock(this, spanInfo);\n\n    if (callback) {\n      process.nextTick(() => callback(null, mockClient, () => {}));\n      return;\n    } else {\n      return Promise.resolve(mockClient);\n    }\n  }\n\n  private _wrap(\n    target: Query | Connection | Client | Pool,\n    propertyName: string,\n    wrapper: (original: any) => any,\n  ): void {\n    wrap(target, propertyName, wrapper);\n  }\n}\n","import { TdInstrumentationConfig } from \"../../core/baseClasses/TdInstrumentationAbstract\";\nimport { TuskDriftMode } from \"../../../core/TuskDrift\";\n\nexport interface PostgresClientInputValue {\n  query: string;\n  parameters: any[];\n  options?: Record<string, any>;\n  [key: string]: unknown;\n}\n\nexport interface PostgresTransactionInputValue {\n  query: \"BEGIN\" | \"COMMIT\" | \"ROLLBACK\";\n  parameters: any[];\n  options?: {\n    transactionOptions?: string;\n  };\n}\n\nexport interface PostgresConnectionInputValue {\n  connectionString?: string;\n  options?: Record<string, any>;\n}\n\nexport interface PostgresModuleExports {\n  sql?: Function;\n  default?: Function;\n  [key: string]: any;\n}\n\nexport interface PostgresInstrumentationConfig extends TdInstrumentationConfig {\n  requestHook?: (query: any) => void;\n  responseHook?: (result: any) => void;\n  mode?: TuskDriftMode;\n}\n\n/**\n * postgres.js result format with metadata\n */\nexport interface PostgresResult {\n  rows?: PostgresRow[];\n  command?: string;\n  count?: number;\n}\n\n/**\n * postgres.js row data (generic object with any properties)\n */\nexport type PostgresRow = Record<string, any>;\n\n/**\n * Result from convertPostgresTypes - can be either:\n * - A result object with {rows, command, count}\n * - A plain array of rows\n * - null/undefined\n */\nexport type PostgresConvertedResult =\n  | PostgresResult\n  | PostgresRow[];\n\nexport type PostgresOutputValueType = {\n  rows?: PostgresRow[];\n  command?: string;\n  count?: number;\n  _tdOriginalFormat: PostgresReturnType;\n}\n\n// Add this as a private method in your class\nexport function isPostgresOutputValueType(value: any): value is PostgresOutputValueType {\n  return (\n    value !== null &&\n    value !== undefined &&\n    typeof value === \"object\" &&\n    \"_tdOriginalFormat\" in value &&\n    Object.values(PostgresReturnType).includes(value._tdOriginalFormat)\n  );\n}\n\n/**\n * Transaction result\n */\nexport interface PostgresTransactionResult {\n  status: \"committed\" | \"rolled_back\";\n  result?: any;\n  error?: string;\n}\n\nexport enum PostgresReturnType {\n  ARRAY = \"array\",\n  OBJECT = \"object\",\n}","import { TdInstrumentationBase } from \"../../core/baseClasses/TdInstrumentationBase\";\nimport { TdInstrumentationNodeModule } from \"../../core/baseClasses/TdInstrumentationNodeModule\";\nimport { SpanUtils, SpanInfo } from \"../../../core/tracing/SpanUtils\";\nimport { SpanKind, SpanStatusCode } from \"@opentelemetry/api\";\nimport { TuskDriftCore, TuskDriftMode } from \"../../../core/TuskDrift\";\nimport { captureStackTrace, wrap } from \"../../core/utils\";\nimport { findMockResponseAsync } from \"../../core/utils/mockResponseUtils\";\nimport { handleRecordMode, handleReplayMode } from \"../../core/utils/modeUtils\";\nimport {\n  PostgresModuleExports,\n  PostgresClientInputValue,\n  PostgresInstrumentationConfig,\n  PostgresRow,\n  PostgresConvertedResult,\n  PostgresReturnType,\n  PostgresOutputValueType,\n  isPostgresOutputValueType,\n} from \"./types\";\nimport { PackageType } from \"@use-tusk/drift-schemas/core/span\";\nimport { logger, isEsm } from \"../../../core/utils\";\n\nexport class PostgresInstrumentation extends TdInstrumentationBase {\n  private readonly INSTRUMENTATION_NAME = \"PostgresInstrumentation\";\n  private mode: TuskDriftMode;\n  private tuskDrift: TuskDriftCore;\n\n  constructor(config: PostgresInstrumentationConfig = {}) {\n    super(\"postgres\", config);\n    this.mode = config.mode || TuskDriftMode.DISABLED;\n    this.tuskDrift = TuskDriftCore.getInstance();\n  }\n\n  init(): TdInstrumentationNodeModule[] {\n    return [\n      new TdInstrumentationNodeModule({\n        name: \"postgres\",\n        supportedVersions: [\"3.*\"],\n        patch: (moduleExports: PostgresModuleExports) => this._patchPostgresModule(moduleExports),\n      }),\n    ];\n  }\n\n  private _patchPostgresModule(postgresModule: PostgresModuleExports): PostgresModuleExports {\n    logger.debug(`[PostgresInstrumentation] Patching Postgres module in ${this.mode} mode`);\n\n    if (this.isModulePatched(postgresModule)) {\n      logger.debug(`[PostgresInstrumentation] Postgres module already patched, skipping`);\n      return postgresModule;\n    }\n\n    const self = this;\n\n    if (isEsm(postgresModule)) {\n      // ESM Case: Default function exports are in the .default property\n      // In ESM: import postgres from 'postgres' gives { default: function(...) {...} }\n      // We need to wrap moduleExports.default, not the module itself\n      logger.debug(`[PostgresInstrumentation] Wrapping ESM default export`);\n      this._wrap(postgresModule, \"default\", (originalFunction: any) => {\n        return function (this: any, ...args: any[]) {\n          return self._handlePostgresConnection(originalFunction, args);\n        };\n      });\n    } else {\n      // CommonJS Case: The module IS the function directly\n      // In CJS: const postgres = require('postgres') gives the function directly\n      // We need to create a wrapped function and return it\n      logger.debug(`[PostgresInstrumentation] Module is a function (CJS style)`);\n      const originalFunction = postgresModule as any;\n\n      const wrappedFunction = function (...args: any[]) {\n        logger.debug(`[PostgresInstrumentation] Wrapped postgres() (CJS) called with args:`, args);\n        return self._handlePostgresConnection(originalFunction, args);\n      } as any;\n\n      // Copy ALL properties from original function to wrapped function\n      // This ensures the wrapped function has all the same properties (like .sql, etc.)\n      Object.setPrototypeOf(wrappedFunction, Object.getPrototypeOf(originalFunction));\n      Object.defineProperty(wrappedFunction, \"name\", { value: originalFunction.name });\n\n      // Copy all enumerable properties\n      for (const key in originalFunction) {\n        if (originalFunction.hasOwnProperty(key)) {\n          wrappedFunction[key] = originalFunction[key];\n        }\n      }\n\n      // Copy all own property descriptors (for non-enumerable properties)\n      Object.getOwnPropertyNames(originalFunction).forEach((key) => {\n        if (key !== \"prototype\" && key !== \"length\" && key !== \"name\") {\n          const descriptor = Object.getOwnPropertyDescriptor(originalFunction, key);\n          if (descriptor) {\n            Object.defineProperty(wrappedFunction, key, descriptor);\n          }\n        }\n      });\n\n      postgresModule = wrappedFunction;\n    }\n\n    // TODO: need to test that this actually gets patched in ESM mode\n    // Also patch the sql function if it exists as a named export\n    if (postgresModule.sql && typeof postgresModule.sql === \"function\") {\n      this._wrap(postgresModule, \"sql\", this._getSqlPatchFn());\n      logger.debug(`[PostgresInstrumentation] Wrapped sql function`);\n    }\n\n    this.markModuleAsPatched(postgresModule);\n    logger.debug(`[PostgresInstrumentation] Postgres module patching complete`);\n\n    return postgresModule;\n  }\n\n  private _handlePostgresConnection(originalFunction: Function, args: any[]): any {\n    // Extract connection parameters from args\n    // postgres() signature: postgres(url, options?) or postgres(options)\n    const connectionString = typeof args[0] === \"string\" ? args[0] : undefined;\n    const options = typeof args[0] === \"string\" ? args[1] : args[0];\n\n    const inputValue = {\n      connectionString: connectionString\n        ? this._sanitizeConnectionString(connectionString)\n        : undefined,\n      options: options ? this._sanitizeConnectionOptions(options) : undefined,\n    };\n\n    // Handle replay mode\n    if (this.mode === TuskDriftMode.REPLAY) {\n      return handleReplayMode({\n        noOpRequestHandler: () => {\n          try {\n            const sqlInstance = originalFunction(...args);\n            const wrappedInstance = this._wrapSqlInstance(sqlInstance);\n\n            return wrappedInstance;\n          } catch (error: any) {\n            logger.debug(\n              `[PostgresInstrumentation] Postgres connection error in replay: ${error.message}`,\n            );\n\n            throw error;\n          }\n        },\n        isServerRequest: false,\n        replayModeHandler: () => {\n          return SpanUtils.createAndExecuteSpan(\n            this.mode,\n            () => {\n              const sqlInstance = originalFunction(...args);\n              return this._wrapSqlInstance(sqlInstance);\n            },\n            {\n              name: \"postgres.connect\",\n              kind: SpanKind.CLIENT,\n              submodule: \"connect\",\n              packageType: PackageType.PG,\n              packageName: \"postgres\",\n              instrumentationName: this.INSTRUMENTATION_NAME,\n              inputValue: inputValue,\n              isPreAppStart: false,\n            },\n            (spanInfo) => {\n              return this._handleReplayConnect(originalFunction, args);\n            },\n          );\n        },\n      });\n    } else if (this.mode === TuskDriftMode.RECORD) {\n      return handleRecordMode({\n        originalFunctionCall: () => {\n          const sqlInstance = originalFunction(...args);\n          return this._wrapSqlInstance(sqlInstance);\n        },\n        recordModeHandler: ({ isPreAppStart }) => {\n          return SpanUtils.createAndExecuteSpan(\n            this.mode,\n            () => {\n              const sqlInstance = originalFunction(...args);\n              return this._wrapSqlInstance(sqlInstance);\n            },\n            {\n              name: \"postgres.connect\",\n              kind: SpanKind.CLIENT,\n              submodule: \"connect\",\n              packageType: PackageType.PG,\n              packageName: \"postgres\",\n              instrumentationName: this.INSTRUMENTATION_NAME,\n              inputValue: inputValue,\n              isPreAppStart,\n            },\n            (spanInfo) => {\n              return this._handleRecordConnect(spanInfo, originalFunction, args);\n            },\n          );\n        },\n        spanKind: SpanKind.CLIENT,\n      });\n    } else {\n      return originalFunction(...args);\n    }\n  }\n\n  private _sanitizeConnectionString(connectionString: string): string {\n    try {\n      // Remove password from connection string for security\n      const url = new URL(connectionString);\n      if (url.password) {\n        url.password = \"***\";\n      }\n      return url.toString();\n    } catch {\n      return \"[INVALID_URL]\";\n    }\n  }\n\n  private _sanitizeConnectionOptions(options: any): any {\n    if (!options || typeof options !== \"object\") {\n      return options;\n    }\n\n    const sanitized = { ...options };\n\n    // Remove sensitive fields\n    if (sanitized.password) {\n      sanitized.password = \"***\";\n    }\n    if (sanitized.ssl && typeof sanitized.ssl === \"object\") {\n      sanitized.ssl = { ...sanitized.ssl };\n      if (sanitized.ssl.key) sanitized.ssl.key = \"***\";\n      if (sanitized.ssl.cert) sanitized.ssl.cert = \"***\";\n      if (sanitized.ssl.ca) sanitized.ssl.ca = \"***\";\n    }\n\n    return sanitized;\n  }\n\n  private _handleRecordConnect(spanInfo: SpanInfo, originalFunction: Function, args: any[]): any {\n    const sqlInstance = originalFunction(...args);\n    const wrappedInstance = this._wrapSqlInstance(sqlInstance);\n\n    try {\n      logger.debug(\n        `[PostgresInstrumentation] Postgres connection created successfully (${SpanUtils.getTraceInfo()})`,\n      );\n      SpanUtils.addSpanAttributes(spanInfo.span, {\n        outputValue: { connected: true },\n      });\n      SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n    } catch (error) {\n      logger.error(`[PostgresInstrumentation] error adding span attributes:`, error);\n    }\n\n    return wrappedInstance;\n  }\n\n  private _handleReplayConnect(originalFunction: Function, args: any[]): any {\n    logger.debug(`[PostgresInstrumentation] Replaying Postgres connection`);\n\n    // In replay mode, we still create the sql instance but wrap it\n    // The actual queries will be mocked when they're executed\n    try {\n      const sqlInstance = originalFunction(...args);\n      const wrappedInstance = this._wrapSqlInstance(sqlInstance);\n\n      return wrappedInstance;\n    } catch (error: any) {\n      logger.debug(\n        `[PostgresInstrumentation] Postgres connection error in replay: ${error.message}`,\n      );\n\n      throw error;\n    }\n  }\n\n  private _wrapSqlInstance(sqlInstance: any): any {\n    if (!sqlInstance || typeof sqlInstance !== \"function\") {\n      return sqlInstance;\n    }\n\n    const self = this;\n    const originalSql = sqlInstance;\n\n    // Create wrapped sql function\n    const wrappedSql = function (strings: TemplateStringsArray, ...values: any[]) {\n      return self._handleSqlQuery(originalSql, strings, values);\n    };\n\n    // Copy all properties from the original sql instance\n    Object.setPrototypeOf(wrappedSql, Object.getPrototypeOf(originalSql));\n    for (const key in originalSql) {\n      if (typeof originalSql[key] !== \"function\") {\n        (wrappedSql as any)[key] = originalSql[key];\n      } else {\n        (wrappedSql as any)[key] = originalSql[key].bind(originalSql);\n      }\n    }\n\n    // Patch the unsafe method specifically\n    if (typeof originalSql.unsafe === \"function\") {\n      (wrappedSql as any).unsafe = self._wrapUnsafeMethod(originalSql);\n      logger.debug(`[PostgresInstrumentation] Wrapped unsafe method on sql instance`);\n    }\n\n    // Patch the begin method for transaction support\n    if (typeof originalSql.begin === \"function\") {\n      (wrappedSql as any).begin = self._wrapBeginMethod(originalSql);\n      logger.debug(`[PostgresInstrumentation] Wrapped begin method on sql instance`);\n    }\n\n    return wrappedSql;\n  }\n\n  private _wrapUnsafeMethod(sqlInstance: any) {\n    const self = this;\n    const originalUnsafe = sqlInstance.unsafe;\n\n    return function unsafe(\n      query: string,\n      parameters?: any[],\n      queryOptions?: { prepare?: boolean },\n    ): any {\n      return self._handleUnsafeQuery(sqlInstance, originalUnsafe, query, parameters, queryOptions);\n    };\n  }\n\n  private _wrapBeginMethod(sqlInstance: any) {\n    const self = this;\n    const originalBegin = sqlInstance.begin;\n\n    return function begin(\n      optionsOrCallback?: string | ((sql: any) => any),\n      callback?: (sql: any) => any,\n    ): any {\n      // Handle both signatures: begin(callback) and begin(options, callback)\n      const options = typeof optionsOrCallback === \"string\" ? optionsOrCallback : \"\";\n      const transactionCallback =\n        typeof optionsOrCallback === \"function\" ? optionsOrCallback : callback;\n\n      return self._handleBeginTransaction(sqlInstance, originalBegin, options, transactionCallback);\n    };\n  }\n\n  private _getSqlPatchFn() {\n    const self = this;\n\n    return (originalSql: Function) => {\n      return function sql(strings: TemplateStringsArray, ...values: any[]) {\n        return self._handleSqlQuery(originalSql, strings, values);\n      };\n    };\n  }\n\n  private _handleSqlQuery(\n    originalSql: Function,\n    strings: TemplateStringsArray,\n    values: any[],\n  ): any {\n    // Reconstruct the query from template strings and values\n    let query = \"\";\n    for (let i = 0; i < strings.length; i++) {\n      query += strings[i];\n      if (i < values.length) {\n        query += `$${i + 1}`; // PostgreSQL parameter placeholder\n      }\n    }\n\n    const inputValue: PostgresClientInputValue = {\n      query: query.trim(),\n      parameters: values,\n    };\n\n    // Handle replay mode (only if app is ready)\n    if (this.mode === TuskDriftMode.REPLAY) {\n      const stackTrace = captureStackTrace([\"PostgresInstrumentation\"]);\n\n      return handleReplayMode({\n        noOpRequestHandler: () => {\n          return;\n        },\n        isServerRequest: false,\n        replayModeHandler: () => {\n          return SpanUtils.createAndExecuteSpan(\n            this.mode,\n            () => originalSql.call(this, strings, ...values),\n            {\n              name: \"postgres.query\",\n              kind: SpanKind.CLIENT,\n              submodule: \"query\",\n              packageType: PackageType.PG,\n              packageName: \"postgres\",\n              instrumentationName: this.INSTRUMENTATION_NAME,\n              inputValue: inputValue,\n              isPreAppStart: false,\n            },\n            (spanInfo) => {\n              return this.handleReplaySqlQuery({\n                inputValue,\n                spanInfo,\n                submodule: \"query\",\n                name: \"postgres.query\",\n                stackTrace,\n              });\n            },\n          );\n        },\n      });\n    } else if (this.mode === TuskDriftMode.RECORD) {\n      return handleRecordMode({\n        originalFunctionCall: () => originalSql.call(this, strings, ...values),\n        recordModeHandler: ({ isPreAppStart }) => {\n          return SpanUtils.createAndExecuteSpan(\n            this.mode,\n            () => originalSql.call(this, strings, ...values),\n            {\n              name: \"postgres.query\",\n              kind: SpanKind.CLIENT,\n              submodule: \"query\",\n              packageType: PackageType.PG,\n              instrumentationName: this.INSTRUMENTATION_NAME,\n              packageName: \"postgres\",\n              inputValue: inputValue,\n              isPreAppStart,\n            },\n            (spanInfo) => {\n              return this._handleRecordQueryInSpan(spanInfo, originalSql, strings, values);\n            },\n          );\n        },\n        spanKind: SpanKind.CLIENT,\n      });\n    } else {\n      // Should never happen since we're only patching record and replay modes\n      return originalSql.call(this, strings, ...values);\n    }\n  }\n\n  private _handleUnsafeQuery(\n    sqlInstance: any,\n    originalUnsafe: Function,\n    query: string,\n    parameters?: any[],\n    queryOptions?: { prepare?: boolean },\n  ): any {\n    // Create a function that calls unsafe with the correct arguments\n    const executeUnsafe = () => {\n      // Only pass arguments that were actually provided\n      if (queryOptions !== undefined) {\n        return originalUnsafe.call(sqlInstance, query, parameters, queryOptions);\n      } else if (parameters !== undefined) {\n        return originalUnsafe.call(sqlInstance, query, parameters);\n      } else {\n        return originalUnsafe.call(sqlInstance, query);\n      }\n    };\n\n    const inputValue: PostgresClientInputValue = {\n      query: query.trim(),\n      parameters: parameters || [],\n      options: queryOptions,\n    };\n\n    if (this.mode === TuskDriftMode.REPLAY) {\n      const stackTrace = captureStackTrace([\"PostgresInstrumentation\"]);\n\n      return handleReplayMode({\n        noOpRequestHandler: () => {\n          return Promise.resolve(undefined);\n        },\n        isServerRequest: false,\n        replayModeHandler: () => {\n          return this._createPendingQueryWrapper(() => {\n            return SpanUtils.createAndExecuteSpan(\n              this.mode,\n              () => executeUnsafe(),\n              {\n                name: \"postgres.unsafe\",\n                kind: SpanKind.CLIENT,\n                submodule: \"unsafe\",\n                packageType: PackageType.PG,\n                packageName: \"postgres\",\n                instrumentationName: this.INSTRUMENTATION_NAME,\n                inputValue: inputValue,\n                isPreAppStart: false,\n              },\n              (spanInfo) => {\n                return this.handleReplayUnsafeQuery({\n                  inputValue,\n                  spanInfo,\n                  submodule: \"unsafe\",\n                  name: \"postgres.unsafe\",\n                  stackTrace,\n                });\n              },\n            );\n          });\n        },\n      });\n    } else if (this.mode === TuskDriftMode.RECORD) {\n      return handleRecordMode({\n        originalFunctionCall: executeUnsafe,\n        recordModeHandler: ({ isPreAppStart }) => {\n          // Execute postgres.js query first, then create span afterwards\n          return SpanUtils.createAndExecuteSpan(\n            this.mode,\n            executeUnsafe,\n            {\n              name: \"postgres.unsafe\",\n              kind: SpanKind.CLIENT,\n              submodule: \"unsafe\",\n              packageType: PackageType.PG,\n              packageName: \"postgres\",\n              instrumentationName: this.INSTRUMENTATION_NAME,\n              inputValue: inputValue,\n              isPreAppStart,\n            },\n            (spanInfo) => {\n              return this._executeThenAddOutputAttributes(spanInfo, executeUnsafe);\n            },\n          );\n        },\n        spanKind: SpanKind.CLIENT,\n      });\n    } else {\n      // Should never happen since we're only patching record and replay modes\n      return executeUnsafe();\n    }\n  }\n\n  private _handleBeginTransaction(\n    sqlInstance: any,\n    originalBegin: Function,\n    options: string,\n    transactionCallback?: (sql: any) => any,\n  ): any {\n    const inputValue = {\n      query: \"BEGIN\",\n      options: options ? { transactionOptions: options } : undefined,\n    };\n\n    const executeBegin = () => {\n      if (options && transactionCallback) {\n        return originalBegin.call(sqlInstance, options, transactionCallback);\n      } else if (transactionCallback) {\n        return originalBegin.call(sqlInstance, transactionCallback);\n      } else {\n        return originalBegin.call(sqlInstance, options || undefined);\n      }\n    };\n\n    if (this.mode === TuskDriftMode.REPLAY) {\n      const stackTrace = captureStackTrace([\"PostgresInstrumentation\"]);\n\n      return handleReplayMode({\n        noOpRequestHandler: () => {\n          return;\n        },\n        isServerRequest: false,\n        replayModeHandler: () => {\n          return SpanUtils.createAndExecuteSpan(\n            this.mode,\n            () => executeBegin(),\n            {\n              name: \"postgres.begin\",\n              kind: SpanKind.CLIENT,\n              submodule: \"transaction\",\n              packageType: PackageType.PG,\n              packageName: \"postgres\",\n              instrumentationName: this.INSTRUMENTATION_NAME,\n              inputValue: inputValue,\n              isPreAppStart: false,\n            },\n            (spanInfo) => {\n              return this._handleReplayBeginTransaction(spanInfo, options, stackTrace);\n            },\n          );\n        },\n      });\n    } else if (this.mode === TuskDriftMode.RECORD) {\n      return handleRecordMode({\n        originalFunctionCall: executeBegin,\n        recordModeHandler: ({ isPreAppStart }) => {\n          return SpanUtils.createAndExecuteSpan(\n            this.mode,\n            executeBegin,\n            {\n              name: \"postgres.begin\",\n              kind: SpanKind.CLIENT,\n              submodule: \"transaction\",\n              packageType: PackageType.PG,\n              packageName: \"postgres\",\n              instrumentationName: this.INSTRUMENTATION_NAME,\n              inputValue: inputValue,\n              isPreAppStart,\n            },\n            (spanInfo) => {\n              return this._handleRecordBeginTransaction(spanInfo, executeBegin);\n            },\n          );\n        },\n        spanKind: SpanKind.CLIENT,\n      });\n    } else {\n      return executeBegin();\n    }\n  }\n\n  /**\n   * Execute postgres.js unsafe query and create span afterwards.\n   *\n   * postgres.js has sophisticated internal session and connection management\n   * that is extremely sensitive to async context changes. Unlike the regular 'pg' library,\n   * postgres.js maintains internal state using promise identity and async context tracking.\n   *\n   * The issue: promise chain modification breaks postgres.js.\n   * Calling .then()/.catch() creates new promise objects, breaking postgres.js's internal tracking\n   *\n   * Solution: We must execute the postgres.js query in its completely unmodified context:\n   * - Return the original promise object unchanged\n   * - Use promise.finally() to track completion without creating a new promise chain\n   *\n   * This preserves postgres.js's internal session management while still providing tracing.\n   * The 'pg' library doesn't have this issue because it has simpler internal state management.\n   */\n  private _executeThenAddOutputAttributes(\n    spanInfo: SpanInfo,\n    executeUnsafe: () => Promise<any>,\n  ): Promise<any> {\n    const promise = executeUnsafe();\n\n    // Use finally() which doesn't change the promise chain's behavior\n    promise.finally(() => {\n      // Create span after completion without affecting the original promise\n      promise\n        .then((result) => {\n          logger.debug(`[PostgresInstrumentation] Postgres unsafe query completed successfully`);\n          try {\n            this._addOutputAttributesToSpan(spanInfo, result);\n            SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n          } catch (error) {\n            logger.error(\n              `[PostgresInstrumentation] error processing unsafe query response:`,\n              error,\n            );\n          }\n        })\n        .catch((error) => {\n          logger.debug(`[PostgresInstrumentation] Postgres unsafe query error: ${error.message}`);\n          try {\n            SpanUtils.endSpan(spanInfo.span, {\n              code: SpanStatusCode.ERROR,\n              message: error.message,\n            });\n          } catch (error) {\n            logger.error(`[PostgresInstrumentation] error ending span:`, error);\n          }\n        });\n    });\n\n    return promise; // Return the original promise\n  }\n\n  private _handleRecordBeginTransaction(\n    spanInfo: SpanInfo,\n    executeBegin: () => Promise<any>,\n  ): Promise<any> {\n    const promise = executeBegin();\n\n    // Use finally() which doesn't change the promise chain's behavior\n    promise.finally(() => {\n      // Create span after completion without affecting the original promise\n      promise\n        .then((result) => {\n          logger.debug(\n            `[PostgresInstrumentation] Postgres transaction completed successfully (${SpanUtils.getTraceInfo()})`,\n          );\n          try {\n            SpanUtils.addSpanAttributes(spanInfo.span, {\n              outputValue: { status: \"committed\", result },\n            });\n            SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n          } catch (error) {\n            logger.error(`[PostgresInstrumentation] error processing transaction response:`, error);\n          }\n        })\n        .catch((error) => {\n          logger.debug(\n            `[PostgresInstrumentation] Postgres transaction error (rolled back): ${error.message} (${SpanUtils.getTraceInfo()})`,\n          );\n          try {\n            SpanUtils.addSpanAttributes(spanInfo.span, {\n              outputValue: { status: \"rolled_back\", error: error.message },\n            });\n            SpanUtils.endSpan(spanInfo.span, {\n              code: SpanStatusCode.ERROR,\n              message: error.message,\n            });\n          } catch (spanError) {\n            logger.error(`[PostgresInstrumentation] error ending span:`, spanError);\n          }\n        });\n    });\n\n    return promise; // Return the original promise\n  }\n\n  private async _handleReplayBeginTransaction(\n    spanInfo: SpanInfo,\n    options?: string,\n    stackTrace?: string,\n  ): Promise<any> {\n    logger.debug(`[PostgresInstrumentation] Replaying Postgres transaction`);\n\n    // Find mock data for the transaction\n    const mockData = await findMockResponseAsync({\n      mockRequestData: {\n        traceId: spanInfo.traceId,\n        spanId: spanInfo.spanId,\n        name: \"postgres.begin\",\n        inputValue: {\n          query: \"BEGIN\",\n          options: options ? { transactionOptions: options } : undefined,\n        },\n        packageName: \"postgres\",\n        instrumentationName: this.INSTRUMENTATION_NAME,\n        submoduleName: \"transaction\",\n        kind: SpanKind.CLIENT,\n        stackTrace,\n      },\n      tuskDrift: this.tuskDrift,\n    });\n\n    if (!mockData) {\n      logger.warn(`[PostgresInstrumentation] No mock data found for transaction BEGIN`);\n      throw new Error(`[PostgresInstrumentation] No matching mock found for transaction BEGIN`);\n    }\n\n    logger.debug(\n      `[PostgresInstrumentation] Found mock data for transaction: ${JSON.stringify(mockData)}`,\n    );\n\n    // Transaction results are stored directly without type conversion\n    const transactionResult = mockData.result;\n\n    // Check if the transaction was successful or rolled back\n    const wasCommitted =\n      transactionResult &&\n      typeof transactionResult === \"object\" &&\n      \"status\" in transactionResult &&\n      transactionResult.status === \"committed\";\n\n    if (wasCommitted) {\n      return transactionResult.result;\n    } else {\n      // Transaction was rolled back\n      const errorMessage =\n        transactionResult &&\n        typeof transactionResult === \"object\" &&\n        \"error\" in transactionResult &&\n        transactionResult.error\n          ? transactionResult.error\n          : \"Transaction rolled back\";\n      throw new Error(errorMessage);\n    }\n  }\n\n  private async _handleRecordQueryInSpan(\n    spanInfo: SpanInfo,\n    originalSql: Function,\n    strings: TemplateStringsArray,\n    values: any[],\n  ): Promise<any> {\n    try {\n      const result = await originalSql.call(this, strings, ...values);\n\n      try {\n        logger.debug(\n          `[PostgresInstrumentation] Postgres query completed successfully (${SpanUtils.getTraceInfo()})`,\n        );\n\n        this._addOutputAttributesToSpan(spanInfo, result);\n        SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n      } catch (error) {\n        logger.error(`[PostgresInstrumentation] error processing query response:`, error);\n      }\n\n      return result;\n    } catch (error: any) {\n      try {\n        logger.debug(\n          `[PostgresInstrumentation] Postgres query error: ${error.message} (${SpanUtils.getTraceInfo()})`,\n        );\n        SpanUtils.endSpan(spanInfo.span, {\n          code: SpanStatusCode.ERROR,\n          message: error.message,\n        });\n      } catch (spanError) {\n        logger.error(`[PostgresInstrumentation] error ending span:`, spanError);\n      }\n\n      throw error;\n    }\n  }\n\n  async handleReplaySqlQuery({\n    inputValue,\n    spanInfo,\n    submodule,\n    name,\n    stackTrace,\n  }: {\n    inputValue: PostgresClientInputValue;\n    spanInfo: SpanInfo;\n    submodule: string;\n    name: string;\n    stackTrace?: string;\n  }): Promise<PostgresRow[] | undefined> {\n    logger.debug(`[PostgresInstrumentation] Replaying Postgres sql query`);\n\n    const mockData = await findMockResponseAsync({\n      mockRequestData: {\n        traceId: spanInfo.traceId,\n        spanId: spanInfo.spanId,\n        name,\n        inputValue: inputValue,\n        packageName: \"postgres\",\n        instrumentationName: this.INSTRUMENTATION_NAME,\n        submoduleName: submodule,\n        kind: SpanKind.CLIENT,\n        stackTrace,\n      },\n      tuskDrift: this.tuskDrift,\n    });\n\n    if (!mockData) {\n      const queryText = inputValue.query || \"UNKNOWN_QUERY\";\n      logger.warn(\n        `[PostgresInstrumentation] No mock data found for Postgres sql query: ${queryText}`,\n      );\n      throw new Error(\n        `[PostgresInstrumentation] No matching mock found for Postgres sql query: ${queryText}`,\n      );\n    }\n\n    logger.debug(\n      `[PostgresInstrumentation] Found mock data for Postgres sql query: ${JSON.stringify(mockData)}`,\n    );\n\n    const processedResult = this.convertPostgresTypes(mockData.result);\n\n    logger.debug(\n      `[PostgresInstrumentation] Sql query processed result: ${JSON.stringify(processedResult)}`,\n    );\n\n    // Template string queries return just the rows array\n    // Type guard: check if processedResult has a 'rows' property (PostgresResult type)\n    const isResultObject =\n      processedResult && typeof processedResult === \"object\" && \"rows\" in processedResult;\n    const rows = isResultObject\n      ? processedResult.rows || []\n      : (processedResult as PostgresRow[]) || [];\n\n    // postgres.js returns an array with metadata properties attached\n    const resultArray = Object.assign(rows, {\n      command: isResultObject ? processedResult.command : undefined,\n      count: isResultObject ? processedResult.count : undefined,\n    });\n    return resultArray;\n  }\n\n  async handleReplayUnsafeQuery({\n    inputValue,\n    spanInfo,\n    submodule,\n    name,\n    stackTrace,\n  }: {\n    inputValue: PostgresClientInputValue;\n    spanInfo: SpanInfo;\n    submodule: string;\n    name: string;\n    stackTrace?: string;\n  }): Promise<PostgresConvertedResult | undefined> {\n    logger.debug(`[PostgresInstrumentation] Replaying Postgres unsafe query`);\n\n    const mockData = await findMockResponseAsync({\n      mockRequestData: {\n        traceId: spanInfo.traceId,\n        spanId: spanInfo.spanId,\n        name,\n        inputValue: inputValue,\n        packageName: \"postgres\",\n        instrumentationName: this.INSTRUMENTATION_NAME,\n        submoduleName: submodule,\n        kind: SpanKind.CLIENT,\n        stackTrace,\n      },\n      tuskDrift: this.tuskDrift,\n    });\n\n    if (!mockData) {\n      const queryText = inputValue.query || \"UNKNOWN_QUERY\";\n      logger.warn(\n        `[PostgresInstrumentation] No mock data found for Postgres unsafe query: ${queryText}`,\n      );\n      throw new Error(\n        `[PostgresInstrumentation] No matching mock found for Postgres unsafe query: ${queryText}`,\n      );\n    }\n\n    logger.debug(\n      `[PostgresInstrumentation] Found mock data for Postgres unsafe query: ${JSON.stringify(mockData)}`,\n    );\n\n    const processedResult = this.convertPostgresTypes(mockData.result);\n\n    logger.debug(\n      `[PostgresInstrumentation] Unsafe query processed result: ${JSON.stringify(processedResult)}`,\n    );\n\n    return processedResult;\n  }\n\n  /**\n   * Create a postgres.js-compatible PendingQuery wrapper.\n   * This creates a thenable object with .values(), .raw(), etc. methods\n   * that matches the postgres.js PendingQuery interface.\n   *\n   * NOTE: This wrapper is ONLY needed for unsafe() queries, not template string queries.\n   * - unsafe() returns a PendingQuery with .values() method that Drizzle calls\n   * - Template strings return a plain Promise/array and don't need the wrapper\n   *\n   * Also NOTE: unsafe expects a PendingQuery in return. This includes most common ones, but not all.\n   * There is a possiblity we need to add the rest of the methods to the PendingQuery interface from \"postgres\" library.\n   */\n  private _createPendingQueryWrapper(\n    queryPromiseFactory: () => Promise<PostgresConvertedResult>,\n  ): Promise<any> {\n    // Create the main promise\n    const mainPromise = queryPromiseFactory();\n\n    // Create a thenable wrapper that has the postgres.js methods\n    const pendingQuery = Object.assign(mainPromise, {\n      // .values() returns a promise that resolves to array of value arrays\n      values: () => {\n        return mainPromise.then((result: PostgresConvertedResult) => {\n          if (!result) {\n            return [];\n          }\n\n          // Type guard: check if result is a PostgresResult object with 'rows' property\n          const isResultObject = typeof result === \"object\" && \"rows\" in result;\n          const rows = isResultObject ? result.rows || [] : Array.isArray(result) ? result : [];\n\n          // Convert rows to arrays if they're objects\n          const valueArrays = rows.map((row: PostgresRow) => {\n            if (Array.isArray(row)) {\n              return row;\n            }\n            // If row is an object, convert to array of values\n            return Object.values(row);\n          });\n\n          // Return array with metadata\n          return Object.assign(valueArrays, {\n            command: isResultObject ? result.command : undefined,\n            count: isResultObject ? result.count : undefined,\n          });\n        });\n      },\n    });\n\n    return pendingQuery;\n  }\n\n  /**\n   * Convert PostgreSQL string values back to appropriate JavaScript types\n   * based on common PostgreSQL data patterns.\n   */\n  private convertPostgresTypes(result: any): PostgresConvertedResult | undefined {\n    // if result is not of type PostgresOutputValueType, throw an error\n    if (!isPostgresOutputValueType(result)) {\n      logger.error(\n        `[PostgresInstrumentation] output value is not of type PostgresOutputValueType: ${JSON.stringify(result)}`,\n      );\n      return undefined;\n    }\n\n    if (!result) {\n      return undefined;\n    }\n\n    // Check for our metadata flag\n    const { _tdOriginalFormat: originalFormat, ...convertedResult } = result;\n\n    // Handle postgres.js result format: { command, count, rows }\n    if (originalFormat === PostgresReturnType.OBJECT) {\n      return convertedResult;\n    } else if (originalFormat === PostgresReturnType.ARRAY) {\n      return convertedResult.rows || [];\n    } else {\n      logger.error(`[PostgresInstrumentation] Invalid result format: ${JSON.stringify(result)}`);\n      return undefined;\n    }\n  }\n\n  private _addOutputAttributesToSpan(spanInfo: SpanInfo, result?: any): void {\n    if (!result) return;\n\n    let outputValue: PostgresOutputValueType;\n\n    if (Array.isArray(result)) {\n      // Direct array result - wrap with metadata to indicate original format\n      logger.debug(\n        `[PostgresInstrumentation] Adding output attributes to span for array result: ${JSON.stringify(result)}`,\n      );\n      outputValue = {\n        _tdOriginalFormat: PostgresReturnType.ARRAY,\n        rows: result,\n      };\n    } else if (typeof result === \"object\") {\n      logger.debug(\n        `[PostgresInstrumentation] Adding output attributes to span for object result: ${JSON.stringify(result)}`,\n      );\n      outputValue = {\n        _tdOriginalFormat: PostgresReturnType.OBJECT,\n        count: result.count,\n        rows: result.rows,\n        command: result.command,\n      };\n    } else {\n      logger.error(`[PostgresInstrumentation] Invalid result format: ${JSON.stringify(result)}`);\n      return;\n    }\n\n    SpanUtils.addSpanAttributes(spanInfo.span, {\n      outputValue,\n    });\n  }\n\n  private _wrap(target: any, propertyName: string, wrapper: (original: any) => any): void {\n    wrap(target, propertyName, wrapper);\n  }\n}\n","import { EventEmitter } from \"events\";\nimport { Mysql2Instrumentation } from \"../Instrumentation\";\nimport { createMockInputValue } from \"../../../../core/utils\";\nimport { SpanInfo } from \"../../../../core/tracing/SpanUtils\";\nimport { logger } from \"../../../../core/utils/logger\";\nimport { QueryCallback } from \"../types\";\nimport { captureStackTrace } from \"src/instrumentation/core/utils\";\n\n/**\n * Mock MySQL2 connection/pool connection for replay mode\n * Extends EventEmitter to properly handle all connection methods and events\n */\nexport class TdMysql2ConnectionMock extends EventEmitter {\n  private mysql2Instrumentation: Mysql2Instrumentation;\n  private clientType: \"connection\" | \"pool\" | \"poolConnection\"; // Add this property\n  private spanInfo?: SpanInfo;\n\n  // MySQL2 connection properties\n  public threadId: number | null = null;\n  public config: any = {\n    host: \"localhost\",\n    port: 3306,\n    database: \"mock\",\n    user: \"mock\",\n  };\n\n  constructor(\n    mysql2Instrumentation: Mysql2Instrumentation,\n    clientType: \"connection\" | \"pool\" | \"poolConnection\" = \"poolConnection\", // Add parameter with default\n    spanInfo?: SpanInfo,\n  ) {\n    super();\n    this.mysql2Instrumentation = mysql2Instrumentation;\n    this.spanInfo = spanInfo;\n    this.clientType = clientType; // Store the clientType\n    this.threadId = 1;\n  }\n\n  query(...args: any[]) {\n    logger.debug(`[TdMysql2ConnectionMock] Mock connection query intercepted in REPLAY mode`);\n\n    const stackTrace = captureStackTrace([\"TdMysql2ConnectionMock\"]);\n\n    // Parse query arguments similar to the main query patch\n    const queryConfig = this.mysql2Instrumentation.parseQueryArgs(args);\n\n    if (!queryConfig || !queryConfig.sql) {\n      logger.debug(\n        `[TdMysql2ConnectionMock] Could not parse mock connection query, returning empty result`,\n      );\n      const emptyResult = { rows: [], fields: [] };\n      if (queryConfig?.callback) {\n        process.nextTick(() => queryConfig.callback!(null, emptyResult.rows, emptyResult.fields));\n        return;\n      }\n      return Promise.resolve([emptyResult.rows, emptyResult.fields]);\n    }\n\n    const rawInputValue = {\n      sql: queryConfig.sql,\n      values: queryConfig.values || [],\n      clientType: this.clientType, // Use the stored clientType instead of hardcoded value\n    };\n\n    const inputValue = createMockInputValue(rawInputValue);\n\n    if (this.spanInfo) {\n      return this.mysql2Instrumentation.handleReplayQuery(\n        queryConfig,\n        inputValue,\n        this.spanInfo,\n        stackTrace,\n      );\n    } else {\n      // Background query\n      // Return an EventEmitter that immediately completes with empty results\n      return this.mysql2Instrumentation.handleNoOpReplayQuery(queryConfig);\n    }\n  }\n\n  execute(...args: any[]) {\n    logger.debug(`[TdMysql2ConnectionMock] Mock connection execute intercepted in REPLAY mode`);\n\n    const stackTrace = captureStackTrace([\"TdMysql2ConnectionMock\"]);\n\n    // Parse execute arguments similar to the main execute patch\n    const queryConfig = this.mysql2Instrumentation.parseQueryArgs(args);\n\n    if (!queryConfig || !queryConfig.sql) {\n      logger.debug(\n        `[TdMysql2ConnectionMock] Could not parse mock connection execute, returning empty result`,\n      );\n      const emptyResult = { rows: [], fields: [] };\n      if (queryConfig?.callback) {\n        process.nextTick(() => queryConfig.callback!(null, emptyResult.rows, emptyResult.fields));\n        return;\n      }\n      return Promise.resolve([emptyResult.rows, emptyResult.fields]);\n    }\n\n    const rawInputValue = {\n      sql: queryConfig.sql,\n      values: queryConfig.values || [],\n      clientType: this.clientType, // Use the stored clientType instead of hardcoded value\n    };\n\n    const inputValue = createMockInputValue(rawInputValue);\n\n    if (this.spanInfo) {\n      return this.mysql2Instrumentation.handleReplayQuery(\n        queryConfig,\n        inputValue,\n        this.spanInfo,\n        stackTrace,\n      );\n    } else {\n      // Background query\n      // Return an EventEmitter that immediately completes with empty results\n      return this.mysql2Instrumentation.handleNoOpReplayQuery(queryConfig);\n    }\n  }\n\n  release() {\n    // No-op for pool connection release - just emit end event to simulate normal behavior\n    this.emit(\"end\");\n  }\n\n  destroy() {\n    // No-op for connection destroy\n    this.emit(\"end\");\n  }\n\n  end(callback?: QueryCallback) {\n    this.emit(\"end\");\n    if (callback) {\n      process.nextTick(() => callback(null));\n      return;\n    }\n    return Promise.resolve();\n  }\n\n  connect(callback?: QueryCallback) {\n    // Mock connect - already connected\n    if (callback) {\n      process.nextTick(() => callback(null));\n      return;\n    }\n    return Promise.resolve();\n  }\n\n  ping(callback?: QueryCallback) {\n    // Mock ping\n    if (callback) {\n      process.nextTick(() => callback(null));\n      return;\n    }\n    return Promise.resolve();\n  }\n\n  beginTransaction(callback?: QueryCallback) {\n    if (callback) {\n      process.nextTick(() => callback(null));\n      return;\n    }\n    return Promise.resolve();\n  }\n\n  commit(callback?: QueryCallback) {\n    if (callback) {\n      process.nextTick(() => callback(null));\n      return;\n    }\n    return Promise.resolve();\n  }\n\n  rollback(callback?: QueryCallback) {\n    if (callback) {\n      process.nextTick(() => callback(null));\n      return;\n    }\n    return Promise.resolve();\n  }\n\n  changeUser(options: any, callback?: QueryCallback) {\n    if (callback) {\n      process.nextTick(() => callback(null));\n      return;\n    }\n    return Promise.resolve();\n  }\n\n  pause() {\n    // No-op\n  }\n\n  resume() {\n    // No-op\n  }\n\n  escape(value: any): string {\n    if (value === null || value === undefined) {\n      return \"NULL\";\n    }\n    if (typeof value === \"string\") {\n      return `'${value.replace(/'/g, \"''\")}'`;\n    }\n    if (typeof value === \"number\") {\n      return value.toString();\n    }\n    if (typeof value === \"boolean\") {\n      return value ? \"1\" : \"0\";\n    }\n    if (value instanceof Date) {\n      return `'${value.toISOString()}'`;\n    }\n    return `'${String(value)}'`;\n  }\n\n  escapeId(identifier: string): string {\n    return `\\`${identifier.replace(/`/g, \"``\")}\\``;\n  }\n\n  format(sql: string, values?: any[]): string {\n    if (!values || values.length === 0) {\n      return sql;\n    }\n    let index = 0;\n    return sql.replace(/\\?/g, () => {\n      if (index >= values.length) {\n        return \"?\";\n      }\n      return this.escape(values[index++]);\n    });\n  }\n}\n","import { EventEmitter } from \"events\";\nimport { SpanKind } from \"@opentelemetry/api\";\nimport { SpanInfo } from \"../../../../core/tracing/SpanUtils\";\nimport { TuskDriftCore } from \"../../../../core/TuskDrift\";\nimport { findMockResponseAsync } from \"../../../core/utils/mockResponseUtils\";\nimport { logger } from \"../../../../core/utils/logger\";\nimport { Mysql2QueryConfig, Mysql2InputValue, Mysql2Result, QueryError } from \"../types\";\n\n/**\n * Handles replay mode for MySQL2 query operations\n */\nexport class TdMysql2QueryMock {\n  private readonly INSTRUMENTATION_NAME = \"Mysql2Instrumentation\";\n  private tuskDrift: TuskDriftCore;\n\n  constructor() {\n    this.tuskDrift = TuskDriftCore.getInstance();\n  }\n\n  /**\n   * Handle replay of a MySQL2 query (query or execute)\n   */\n  handleReplayQuery(\n    queryConfig: Mysql2QueryConfig,\n    inputValue: Mysql2InputValue,\n    spanInfo: SpanInfo,\n    submoduleName: string = \"query\",\n    stackTrace?: string,\n  ): EventEmitter {\n    logger.debug(`[Mysql2Instrumentation] Replaying MySQL2 query`);\n\n    const clientType = inputValue.clientType;\n    const spanName = `mysql2.${clientType}.${submoduleName}`;\n\n    // Always return an EventEmitter, even when using callbacks\n    // This is because mysql2 always returns a Query object (EventEmitter)\n    // that can be used for both streaming and callback modes\n    // Sequelize relies on this behavior to call .setMaxListeners() on the return value\n    return this._handleQuery(\n      queryConfig,\n      inputValue,\n      spanInfo,\n      spanName,\n      submoduleName,\n      stackTrace,\n    );\n  }\n\n  /**\n   * Handle background query requests (outside of trace context)\n   * Returns an EventEmitter that immediately completes with empty results\n   */\n  handleNoOpReplayQuery(queryConfig: Mysql2QueryConfig): EventEmitter {\n    logger.debug(`[Mysql2Instrumentation] Background query detected, returning empty result`);\n\n    const emitter = new EventEmitter();\n\n    // Make it thenable for Promise/await support\n    (emitter as any).then = function (\n      onResolve?: (value: any) => any,\n      onReject?: (error: any) => any,\n    ) {\n      return new Promise((resolve) => {\n        emitter.once(\"end\", () => {\n          resolve([[], []]); // Empty rows and fields\n        });\n      }).then(onResolve, onReject);\n    };\n\n    // Emit completion asynchronously\n    process.nextTick(() => {\n      const callback = queryConfig.callback;\n      if (callback) {\n        callback(null, [], []);\n      }\n      emitter.emit(\"end\");\n    });\n\n    return emitter;\n  }\n\n  /**\n   * Handle query - always returns an EventEmitter (like mysql2 does)\n   * This handles both callback and streaming modes\n   * The EventEmitter is also thenable (has a .then() method) to support await/Promise usage\n   */\n  private _handleQuery(\n    queryConfig: Mysql2QueryConfig,\n    inputValue: Mysql2InputValue,\n    spanInfo: SpanInfo,\n    spanName: string,\n    submoduleName: string,\n    stackTrace?: string,\n  ): EventEmitter {\n    const emitter = new EventEmitter();\n\n    // Store rows and fields for Promise resolution\n    let storedRows: any = null;\n    let storedFields: any = null;\n\n    // Make the emitter thenable so it can be awaited\n    // This is how mysql2's Query object works - it's an EventEmitter that can also be awaited\n    (emitter as any).then = function (\n      onResolve?: (value: any) => any,\n      onReject?: (error: any) => any,\n    ) {\n      return new Promise((resolve, reject) => {\n        emitter.once(\"end\", () => {\n          resolve([storedRows, storedFields]);\n        });\n        emitter.once(\"error\", (error) => {\n          reject(error);\n        });\n      }).then(onResolve, onReject);\n    };\n\n    // Fetch mock data asynchronously and emit events\n    (async () => {\n      try {\n        const mockData = await this._fetchMockData(\n          inputValue,\n          spanInfo,\n          spanName,\n          submoduleName,\n          stackTrace,\n        );\n\n        if (!mockData) {\n          const sql = queryConfig.sql || inputValue.sql || \"UNKNOWN_QUERY\";\n          logger.warn(`[Mysql2Instrumentation] No mock data found for MySQL2 query: ${sql}`);\n\n          throw new Error(`[Mysql2Instrumentation] No matching mock found for query: ${sql}`);\n        }\n\n        // Convert mock data to proper MySQL2 format\n        const processedResult = this._convertMysql2Types(mockData.result);\n\n        // Store for Promise resolution\n        storedRows = processedResult.rows;\n        storedFields = processedResult.fields;\n\n        // Emit events to simulate query execution\n        process.nextTick(() => {\n          // Emit fields event if available\n          if (processedResult.fields) {\n            emitter.emit(\"fields\", processedResult.fields);\n          }\n\n          // If callback is provided, call it with results\n          if (queryConfig.callback) {\n            queryConfig.callback(null, processedResult.rows, processedResult.fields);\n          }\n\n          // Emit result events for streaming mode\n          if (Array.isArray(processedResult.rows)) {\n            for (const row of processedResult.rows) {\n              emitter.emit(\"result\", row);\n            }\n          } else if (processedResult.rows) {\n            emitter.emit(\"result\", processedResult.rows);\n          }\n\n          // Always emit end event\n          emitter.emit(\"end\");\n        });\n      } catch (error) {\n        process.nextTick(() => {\n          // If callback provided, call it with error\n          if (queryConfig.callback) {\n            queryConfig.callback(error as QueryError);\n          }\n          // Always emit error event\n          emitter.emit(\"error\", error);\n        });\n      }\n    })();\n\n    return emitter;\n  }\n\n  /**\n   * Fetch mock data from CLI\n   */\n  private async _fetchMockData(\n    inputValue: Mysql2InputValue,\n    spanInfo: SpanInfo,\n    spanName: string,\n    submoduleName: string,\n    stackTrace?: string,\n  ) {\n    return await findMockResponseAsync({\n      mockRequestData: {\n        traceId: spanInfo.traceId,\n        spanId: spanInfo.spanId,\n        name: spanName,\n        inputValue: inputValue,\n        packageName: \"mysql2\",\n        instrumentationName: this.INSTRUMENTATION_NAME,\n        submoduleName: submoduleName,\n        kind: SpanKind.CLIENT,\n        stackTrace,\n      },\n      tuskDrift: this.tuskDrift,\n    });\n  }\n\n  /**\n   * Convert stored MySQL2 values back to appropriate JavaScript types\n   */\n  private _convertMysql2Types(result: any): Mysql2Result {\n    if (!result) {\n      return { rows: [], fields: [] };\n    }\n\n    // If result has rows and fields, use them\n    if (result.rows !== undefined && result.fields !== undefined) {\n      return {\n        rows: result.rows,\n        fields: result.fields,\n      };\n    }\n\n    // Otherwise, assume result is the rows\n    return {\n      rows: result,\n      fields: [],\n    };\n  }\n}\n","import { SpanKind } from \"@opentelemetry/api\";\nimport { SpanInfo } from \"../../../../core/tracing/SpanUtils\";\nimport { TuskDriftCore } from \"../../../../core/TuskDrift\";\nimport { findMockResponseAsync } from \"../../../core/utils/mockResponseUtils\";\nimport { logger } from \"../../../../core/utils/logger\";\n\n/**\n * Mock for MySQL2 connection events (connect/error)\n * Handles replay of recorded connection establishment events in REPLAY mode\n * Recording happens through normal SpanUtils flow in RECORD mode\n */\nexport class TdMysql2ConnectionEventMock {\n  private readonly INSTRUMENTATION_NAME = \"Mysql2Instrumentation\";\n  private spanInfo: SpanInfo;\n  private tuskDrift: TuskDriftCore;\n\n  constructor(spanInfo: SpanInfo) {\n    this.spanInfo = spanInfo;\n    this.tuskDrift = TuskDriftCore.getInstance();\n  }\n\n  /**\n   * Get recorded connection event for replay\n   * Returns { output } for success, or throws error if connection failed\n   * The connection events are recorded automatically via SpanUtils in record mode\n   */\n  async getReplayedConnectionEvent(inputValue: any): Promise<{ output?: any }> {\n    logger.debug(`[TdMysql2ConnectionEventMock] Retrieving recorded connection event`);\n\n    try {\n      const mockData = await findMockResponseAsync({\n        mockRequestData: {\n          traceId: this.spanInfo.traceId,\n          spanId: this.spanInfo.spanId,\n          name: \"mysql2.connection.create\",\n          inputValue,\n          packageName: \"mysql2\",\n          instrumentationName: this.INSTRUMENTATION_NAME,\n          submoduleName: \"connectEvent\",\n          kind: SpanKind.CLIENT,\n        },\n        tuskDrift: this.tuskDrift,\n      });\n\n      if (!mockData) {\n        logger.warn(`[TdMysql2ConnectionEventMock] No mock data found, using default success`);\n        return { output: {} };\n      }\n\n      // Return the recorded connection result\n      return {\n        output: mockData.result || {},\n      };\n    } catch (error) {\n      logger.error(`[TdMysql2ConnectionEventMock] Error getting replay value:`, error);\n      // Return empty success event as fallback\n      return { output: {} };\n    }\n  }\n}\n","import { TdInstrumentationBase } from \"../../core/baseClasses/TdInstrumentationBase\";\nimport { TdInstrumentationNodeModule } from \"../../core/baseClasses/TdInstrumentationNodeModule\";\nimport { TdInstrumentationNodeModuleFile } from \"../../core/baseClasses/TdInstrumentationNodeModuleFile\";\nimport { SpanUtils, SpanInfo } from \"../../../core/tracing/SpanUtils\";\nimport { SpanKind, SpanStatusCode } from \"@opentelemetry/api\";\nimport { TuskDriftMode } from \"../../../core/TuskDrift\";\nimport { wrap, isWrapped } from \"../../core/utils/shimmerUtils\";\nimport { handleRecordMode, handleReplayMode } from \"../../core/utils/modeUtils\";\nimport {\n  Mysql2InputValue,\n  Mysql2InstrumentationConfig,\n  Mysql2QueryConfig,\n  Connection,\n  Pool,\n  PoolConnection,\n  QueryError,\n  FieldPacket,\n  QueryCallback,\n} from \"./types\";\nimport { PackageType } from \"@use-tusk/drift-schemas/core/span\";\nimport { logger } from \"../../../core/utils/logger\";\nimport { TdMysql2ConnectionMock } from \"./mocks/TdMysql2ConnectionMock\";\nimport { TdMysql2QueryMock } from \"./mocks/TdMysql2QueryMock\";\nimport { captureStackTrace } from \"src/instrumentation/core/utils\";\nimport { TdMysql2ConnectionEventMock } from \"./mocks/TdMysql2ConnectionEventMock\";\nimport { EventEmitter } from \"events\";\n\n// Version ranges for mysql2\nconst COMPLETE_SUPPORTED_VERSIONS = \">=2.3.3 <4.0.0\";\nconst V2_3_3_TO_3_11_4 = \">=2.3.3 <3.11.5\";\nconst V3_11_5_TO_4_0 = \">=3.11.5 <4.0.0\";\n\nexport class Mysql2Instrumentation extends TdInstrumentationBase {\n  private readonly INSTRUMENTATION_NAME = \"Mysql2Instrumentation\";\n  private mode: TuskDriftMode;\n  private queryMock: TdMysql2QueryMock;\n\n  constructor(config: Mysql2InstrumentationConfig = {}) {\n    super(\"mysql2\", config);\n    this.mode = config.mode || TuskDriftMode.DISABLED;\n    this.queryMock = new TdMysql2QueryMock();\n  }\n\n  init(): TdInstrumentationNodeModule[] {\n    return [\n      new TdInstrumentationNodeModule({\n        name: \"mysql2\",\n        supportedVersions: [COMPLETE_SUPPORTED_VERSIONS],\n        files: [\n          // For v2.3.3-3.11.4: lib/connection.js with prototypes AND class wrapping\n          new TdInstrumentationNodeModuleFile({\n            name: \"mysql2/lib/connection.js\",\n            supportedVersions: [V2_3_3_TO_3_11_4],\n            patch: (moduleExports: any) => this._patchConnectionV2(moduleExports),\n          }),\n          // For v3.11.5+: lib/base/connection.js with prototypes only\n          new TdInstrumentationNodeModuleFile({\n            name: \"mysql2/lib/base/connection.js\",\n            supportedVersions: [V3_11_5_TO_4_0],\n            patch: (moduleExports: any) => this._patchBaseConnection(moduleExports),\n          }),\n          // For v3.11.5+: lib/connection.js with class wrapping only\n          new TdInstrumentationNodeModuleFile({\n            name: \"mysql2/lib/connection.js\",\n            supportedVersions: [V3_11_5_TO_4_0],\n            patch: (moduleExports: any) => this._patchConnectionV3(moduleExports),\n          }),\n          // For v2.3.3-3.11.4: lib/pool.js with prototypes AND class wrapping\n          new TdInstrumentationNodeModuleFile({\n            name: \"mysql2/lib/pool.js\",\n            supportedVersions: [V2_3_3_TO_3_11_4],\n            patch: (moduleExports: any) => this._patchPoolV2(moduleExports),\n          }),\n          // For v3.11.5+: lib/pool.js with class wrapping only\n          new TdInstrumentationNodeModuleFile({\n            name: \"mysql2/lib/pool.js\",\n            supportedVersions: [V3_11_5_TO_4_0],\n            patch: (moduleExports: any) => this._patchPoolV3(moduleExports),\n          }),\n          // For v2.3.3-3.11.4: lib/pool_connection.js with class wrapping\n          new TdInstrumentationNodeModuleFile({\n            name: \"mysql2/lib/pool_connection.js\",\n            supportedVersions: [V2_3_3_TO_3_11_4],\n            patch: (moduleExports: any) => this._patchPoolConnectionV2(moduleExports),\n          }),\n          // For v3.11.5+: lib/pool_connection.js with class wrapping\n          new TdInstrumentationNodeModuleFile({\n            name: \"mysql2/lib/pool_connection.js\",\n            supportedVersions: [V3_11_5_TO_4_0],\n            patch: (moduleExports: any) => this._patchPoolConnectionV3(moduleExports),\n          }),\n        ],\n      }),\n    ];\n  }\n\n  private _patchBaseConnection(BaseConnectionClass: any): any {\n    logger.debug(`[Mysql2Instrumentation] Patching BaseConnection class`);\n\n    if (this.isModulePatched(BaseConnectionClass)) {\n      logger.debug(`[Mysql2Instrumentation] BaseConnection class already patched, skipping`);\n      return BaseConnectionClass;\n    }\n\n    // Wrap BaseConnection.prototype.query\n    if (BaseConnectionClass.prototype && BaseConnectionClass.prototype.query) {\n      if (!isWrapped(BaseConnectionClass.prototype.query)) {\n        this._wrap(BaseConnectionClass.prototype, \"query\", this._getQueryPatchFn(\"connection\"));\n        logger.debug(`[Mysql2Instrumentation] Wrapped BaseConnection.prototype.query`);\n      }\n    }\n\n    // Wrap BaseConnection.prototype.execute (prepared statements)\n    if (BaseConnectionClass.prototype && BaseConnectionClass.prototype.execute) {\n      if (!isWrapped(BaseConnectionClass.prototype.execute)) {\n        this._wrap(BaseConnectionClass.prototype, \"execute\", this._getExecutePatchFn(\"connection\"));\n        logger.debug(`[Mysql2Instrumentation] Wrapped BaseConnection.prototype.execute`);\n      }\n    }\n\n    // Wrap BaseConnection.prototype.connect\n    if (BaseConnectionClass.prototype && BaseConnectionClass.prototype.connect) {\n      if (!isWrapped(BaseConnectionClass.prototype.connect)) {\n        this._wrap(BaseConnectionClass.prototype, \"connect\", this._getConnectPatchFn(\"connection\"));\n        logger.debug(`[Mysql2Instrumentation] Wrapped BaseConnection.prototype.connect`);\n      }\n    }\n\n    // Wrap BaseConnection.prototype.ping\n    if (BaseConnectionClass.prototype && BaseConnectionClass.prototype.ping) {\n      if (!isWrapped(BaseConnectionClass.prototype.ping)) {\n        this._wrap(BaseConnectionClass.prototype, \"ping\", this._getPingPatchFn(\"connection\"));\n        logger.debug(`[Mysql2Instrumentation] Wrapped BaseConnection.prototype.ping`);\n      }\n    }\n\n    // Wrap BaseConnection.prototype.end\n    if (BaseConnectionClass.prototype && BaseConnectionClass.prototype.end) {\n      if (!isWrapped(BaseConnectionClass.prototype.end)) {\n        this._wrap(BaseConnectionClass.prototype, \"end\", this._getEndPatchFn(\"connection\"));\n        logger.debug(`[Mysql2Instrumentation] Wrapped BaseConnection.prototype.end`);\n      }\n    }\n\n    this.markModuleAsPatched(BaseConnectionClass);\n    logger.debug(`[Mysql2Instrumentation] BaseConnection class patching complete`);\n\n    return BaseConnectionClass;\n  }\n\n  // v2.3.3-3.11.4: Patch prototypes AND wrap constructor\n  private _patchConnectionV2(ConnectionClass: any): any {\n    logger.debug(`[Mysql2Instrumentation] Patching Connection class (v2)`);\n\n    if (this.isModulePatched(ConnectionClass)) {\n      logger.debug(`[Mysql2Instrumentation] Connection class already patched, skipping`);\n      return ConnectionClass;\n    }\n\n    // Patch all connection prototype methods\n    this._patchConnectionPrototypes(ConnectionClass);\n\n    // Wrap the Connection constructor to handle connection events\n    const patchedConnectionClass = this._getPatchedConnectionClass(ConnectionClass);\n\n    this.markModuleAsPatched(ConnectionClass);\n\n    logger.debug(`[Mysql2Instrumentation] Connection class (v2) patching complete`);\n    return patchedConnectionClass;\n  }\n\n  // v3.11.5+: Only wrap constructor (prototypes already patched in base/connection.js)\n  private _patchConnectionV3(ConnectionClass: any): any {\n    logger.debug(`[Mysql2Instrumentation] Connection class (v3) - wrapping constructor only`);\n    // For v3.11.5+, lib/connection.js extends base/connection.js\n    // We already patched the prototypes in base/connection.js\n    // But we still need to wrap the constructor for connection event handling\n    const patchedConnectionClass = this._getPatchedConnectionClass(ConnectionClass);\n    return patchedConnectionClass;\n  }\n\n  // Helper to patch all connection prototype methods (used by both versions)\n  private _patchConnectionPrototypes(ConnectionClass: any): void {\n    // Wrap Connection.prototype.query\n    if (ConnectionClass.prototype && ConnectionClass.prototype.query) {\n      if (!isWrapped(ConnectionClass.prototype.query)) {\n        this._wrap(ConnectionClass.prototype, \"query\", this._getQueryPatchFn(\"connection\"));\n        logger.debug(`[Mysql2Instrumentation] Wrapped Connection.prototype.query`);\n      }\n    }\n\n    // Wrap Connection.prototype.execute (prepared statements)\n    if (ConnectionClass.prototype && ConnectionClass.prototype.execute) {\n      if (!isWrapped(ConnectionClass.prototype.execute)) {\n        this._wrap(ConnectionClass.prototype, \"execute\", this._getExecutePatchFn(\"connection\"));\n        logger.debug(`[Mysql2Instrumentation] Wrapped Connection.prototype.execute`);\n      }\n    }\n\n    // Wrap Connection.prototype.connect\n    if (ConnectionClass.prototype && ConnectionClass.prototype.connect) {\n      if (!isWrapped(ConnectionClass.prototype.connect)) {\n        this._wrap(ConnectionClass.prototype, \"connect\", this._getConnectPatchFn(\"connection\"));\n        logger.debug(`[Mysql2Instrumentation] Wrapped Connection.prototype.connect`);\n      }\n    }\n\n    // Wrap Connection.prototype.ping\n    if (ConnectionClass.prototype && ConnectionClass.prototype.ping) {\n      if (!isWrapped(ConnectionClass.prototype.ping)) {\n        this._wrap(ConnectionClass.prototype, \"ping\", this._getPingPatchFn(\"connection\"));\n        logger.debug(`[Mysql2Instrumentation] Wrapped Connection.prototype.ping`);\n      }\n    }\n\n    // Wrap Connection.prototype.end\n    if (ConnectionClass.prototype && ConnectionClass.prototype.end) {\n      if (!isWrapped(ConnectionClass.prototype.end)) {\n        this._wrap(ConnectionClass.prototype, \"end\", this._getEndPatchFn(\"connection\"));\n        logger.debug(`[Mysql2Instrumentation] Wrapped Connection.prototype.end`);\n      }\n    }\n  }\n\n  // v2.3.3-3.11.4: Patch prototypes for Pool\n  private _patchPoolV2(PoolClass: any): any {\n    logger.debug(`[Mysql2Instrumentation] Patching Pool class (v2)`);\n\n    if (this.isModulePatched(PoolClass)) {\n      logger.debug(`[Mysql2Instrumentation] Pool class already patched, skipping`);\n      return PoolClass;\n    }\n\n    // Patch pool prototype methods\n    this._patchPoolPrototypes(PoolClass);\n\n    this.markModuleAsPatched(PoolClass);\n\n    logger.debug(`[Mysql2Instrumentation] Pool class (v2) patching complete`);\n    return PoolClass;\n  }\n\n  // v3.11.5+: Patch prototypes for Pool (there's no base/pool.js)\n  private _patchPoolV3(PoolClass: any): any {\n    logger.debug(`[Mysql2Instrumentation] Patching Pool class (v3)`);\n\n    if (this.isModulePatched(PoolClass)) {\n      logger.debug(`[Mysql2Instrumentation] Pool class already patched, skipping`);\n      return PoolClass;\n    }\n\n    // Patch pool prototype methods\n    this._patchPoolPrototypes(PoolClass);\n\n    this.markModuleAsPatched(PoolClass);\n\n    logger.debug(`[Mysql2Instrumentation] Pool class (v3) patching complete`);\n    return PoolClass;\n  }\n\n  // Helper to patch pool prototype methods\n  private _patchPoolPrototypes(PoolClass: any): void {\n    // Wrap Pool.prototype.query\n    if (PoolClass.prototype && PoolClass.prototype.query) {\n      if (!isWrapped(PoolClass.prototype.query)) {\n        this._wrap(PoolClass.prototype, \"query\", this._getQueryPatchFn(\"pool\"));\n        logger.debug(`[Mysql2Instrumentation] Wrapped Pool.prototype.query`);\n      }\n    }\n\n    // Wrap Pool.prototype.execute (prepared statements)\n    if (PoolClass.prototype && PoolClass.prototype.execute) {\n      if (!isWrapped(PoolClass.prototype.execute)) {\n        this._wrap(PoolClass.prototype, \"execute\", this._getExecutePatchFn(\"pool\"));\n        logger.debug(`[Mysql2Instrumentation] Wrapped Pool.prototype.execute`);\n      }\n    }\n\n    // Wrap Pool.prototype.getConnection\n    if (PoolClass.prototype && PoolClass.prototype.getConnection) {\n      if (!isWrapped(PoolClass.prototype.getConnection)) {\n        this._wrap(PoolClass.prototype, \"getConnection\", this._getPoolGetConnectionPatchFn());\n        logger.debug(`[Mysql2Instrumentation] Wrapped Pool.prototype.getConnection`);\n      }\n    }\n\n    // Wrap Pool.prototype.end\n    if (PoolClass.prototype && PoolClass.prototype.end) {\n      if (!isWrapped(PoolClass.prototype.end)) {\n        this._wrap(PoolClass.prototype, \"end\", this._getEndPatchFn(\"pool\"));\n        logger.debug(`[Mysql2Instrumentation] Wrapped Pool.prototype.end`);\n      }\n    }\n  }\n\n  // v2.3.3-3.11.4: PoolConnection extends Connection, so inherits patched methods\n  private _patchPoolConnectionV2(PoolConnectionClass: any): any {\n    logger.debug(\n      `[Mysql2Instrumentation] PoolConnection class (v2) - skipping (inherits from Connection)`,\n    );\n    // PoolConnection extends Connection, so it inherits the patched methods\n    // No additional patching needed\n    return PoolConnectionClass;\n  }\n\n  // v3.11.5+: PoolConnection extends Connection, so inherits patched methods\n  private _patchPoolConnectionV3(PoolConnectionClass: any): any {\n    logger.debug(\n      `[Mysql2Instrumentation] PoolConnection class (v3) - skipping (inherits from Connection)`,\n    );\n    // PoolConnection extends Connection, so it inherits the patched methods\n    // No additional patching needed\n    return PoolConnectionClass;\n  }\n\n  private _getQueryPatchFn(clientType: \"connection\" | \"pool\" | \"poolConnection\") {\n    const self = this;\n\n    return (originalQuery: Function) => {\n      return function query(this: Connection | Pool | PoolConnection, ...args: any[]) {\n        // Parse query arguments - mysql2 supports multiple signatures\n        let queryConfig: Mysql2QueryConfig | null = null;\n        try {\n          queryConfig = self.parseQueryArgs(args);\n        } catch (error) {\n          logger.error(`[Mysql2Instrumentation] error parsing query args:`, error);\n        }\n\n        if (!queryConfig || !queryConfig.sql) {\n          // If we can't parse the query, let it pass through\n          logger.debug(`[Mysql2Instrumentation] Could not parse query, returning`, args);\n          return originalQuery.apply(this, args);\n        }\n\n        const inputValue: Mysql2InputValue = {\n          sql: queryConfig.sql,\n          values: queryConfig.values || [],\n          clientType,\n        };\n\n        // Handle replay mode (only if app is ready)\n        if (self.mode === TuskDriftMode.REPLAY) {\n          const stackTrace = captureStackTrace([\"Mysql2Instrumentation\"]);\n\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              return self.queryMock.handleNoOpReplayQuery(queryConfig);\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              const spanName = `mysql2.${clientType}.query`;\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalQuery.apply(this, args),\n                {\n                  name: spanName,\n                  kind: SpanKind.CLIENT,\n                  submodule: \"query\",\n                  packageType: PackageType.MYSQL,\n                  packageName: \"mysql2\",\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                },\n                (spanInfo) => {\n                  return self.handleReplayQuery(\n                    queryConfig,\n                    inputValue,\n                    spanInfo,\n                    \"query\",\n                    stackTrace,\n                  );\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => originalQuery.apply(this, args),\n            recordModeHandler: ({ isPreAppStart }) => {\n              // Record mode - create span and execute real query\n              const spanName = `mysql2.${clientType}.query`;\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalQuery.apply(this, args),\n                {\n                  name: spanName,\n                  kind: SpanKind.CLIENT,\n                  submodule: \"query\",\n                  packageType: PackageType.MYSQL,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  packageName: \"mysql2\",\n                  inputValue: inputValue,\n                  isPreAppStart,\n                },\n                (spanInfo) => {\n                  return self._handleRecordQueryInSpan(\n                    spanInfo,\n                    originalQuery,\n                    queryConfig,\n                    args,\n                    this,\n                  );\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          // Should never happen since we're only patching record and replay modes\n          return originalQuery.apply(this, args);\n        }\n      };\n    };\n  }\n\n  private _getExecutePatchFn(clientType: \"connection\" | \"pool\" | \"poolConnection\") {\n    const self = this;\n\n    return (originalExecute: Function) => {\n      return function execute(this: Connection | Pool | PoolConnection, ...args: any[]) {\n        // Parse execute arguments - similar to query but for prepared statements\n        let queryConfig: Mysql2QueryConfig | null = null;\n        try {\n          queryConfig = self.parseQueryArgs(args);\n        } catch (error) {\n          logger.error(`[Mysql2Instrumentation] error parsing execute args:`, error);\n        }\n\n        if (!queryConfig || !queryConfig.sql) {\n          // If we can't parse the query, let it pass through\n          logger.debug(`[Mysql2Instrumentation] Could not parse execute, returning`, args);\n          return originalExecute.apply(this, args);\n        }\n\n        const inputValue: Mysql2InputValue = {\n          sql: queryConfig.sql,\n          values: queryConfig.values || [],\n          clientType,\n        };\n\n        // Handle replay mode (only if app is ready)\n        if (self.mode === TuskDriftMode.REPLAY) {\n          const stackTrace = captureStackTrace([\"Mysql2Instrumentation\"]);\n\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              return self.queryMock.handleNoOpReplayQuery(queryConfig);\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              const spanName = `mysql2.${clientType}.execute`;\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalExecute.apply(this, args),\n                {\n                  name: spanName,\n                  kind: SpanKind.CLIENT,\n                  submodule: \"execute\",\n                  packageType: PackageType.MYSQL,\n                  packageName: \"mysql2\",\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                },\n                (spanInfo) => {\n                  return self.handleReplayQuery(\n                    queryConfig,\n                    inputValue,\n                    spanInfo,\n                    \"execute\",\n                    stackTrace,\n                  );\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => originalExecute.apply(this, args),\n            recordModeHandler: ({ isPreAppStart }) => {\n              // Record mode - create span and execute real query\n              const spanName = `mysql2.${clientType}.execute`;\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalExecute.apply(this, args),\n                {\n                  name: spanName,\n                  kind: SpanKind.CLIENT,\n                  submodule: \"execute\",\n                  packageType: PackageType.MYSQL,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  packageName: \"mysql2\",\n                  inputValue: inputValue,\n                  isPreAppStart,\n                },\n                (spanInfo) => {\n                  return self._handleRecordQueryInSpan(\n                    spanInfo,\n                    originalExecute,\n                    queryConfig,\n                    args,\n                    this,\n                  );\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          // Should never happen since we're only patching record and replay modes\n          return originalExecute.apply(this, args);\n        }\n      };\n    };\n  }\n\n  private _getPoolGetConnectionPatchFn() {\n    const self = this;\n\n    return (originalGetConnection: Function) => {\n      return function getConnection(this: Pool, callback?: QueryCallback) {\n        const inputValue = { clientType: \"pool\" as const };\n\n        // Handle replay mode (only if app is ready)\n        if (self.mode === TuskDriftMode.REPLAY) {\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              return self.handleNoOpReplayGetConnection(callback);\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalGetConnection.apply(this, [callback]),\n                {\n                  name: `mysql2.pool.getConnection`,\n                  kind: SpanKind.CLIENT,\n                  submodule: \"getConnection\",\n                  packageName: \"mysql2\",\n                  packageType: PackageType.MYSQL,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                },\n                (spanInfo) => {\n                  return self._handleReplayPoolGetConnection(spanInfo, callback);\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => originalGetConnection.apply(this, [callback]),\n            recordModeHandler: ({ isPreAppStart }) => {\n              // Record mode - create span and execute real getConnection\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalGetConnection.apply(this, [callback]),\n                {\n                  name: `mysql2.pool.getConnection`,\n                  kind: SpanKind.CLIENT,\n                  submodule: \"getConnection\",\n                  packageName: \"mysql2\",\n                  packageType: PackageType.MYSQL,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart,\n                },\n                (spanInfo) => {\n                  return self._handleRecordPoolGetConnectionInSpan(\n                    spanInfo,\n                    originalGetConnection,\n                    callback,\n                    this,\n                  );\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          // Should never happen since we're only patching record and replay modes\n          return originalGetConnection.apply(this, [callback]);\n        }\n      };\n    };\n  }\n\n  private _getConnectPatchFn(clientType: \"connection\" | \"pool\" | \"poolConnection\") {\n    const self = this;\n\n    return (originalConnect: Function) => {\n      return function connect(this: Connection, callback?: Function) {\n        const inputValue = { clientType };\n\n        if (self.mode === TuskDriftMode.REPLAY) {\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              if (callback) {\n                process.nextTick(() => callback(null));\n                return;\n              }\n              return Promise.resolve();\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalConnect.apply(this, [callback]),\n                {\n                  name: `mysql2.${clientType}.connect`,\n                  kind: SpanKind.CLIENT,\n                  submodule: \"connect\",\n                  packageName: \"mysql2\",\n                  packageType: PackageType.MYSQL,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                },\n                (spanInfo) => {\n                  // In replay mode, just return success immediately\n                  if (callback) {\n                    process.nextTick(() => callback(null));\n                    return;\n                  }\n                  return Promise.resolve();\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => originalConnect.apply(this, [callback]),\n            recordModeHandler: ({ isPreAppStart }) => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalConnect.apply(this, [callback]),\n                {\n                  name: `mysql2.${clientType}.connect`,\n                  kind: SpanKind.CLIENT,\n                  submodule: \"connect\",\n                  packageName: \"mysql2\",\n                  packageType: PackageType.MYSQL,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart,\n                },\n                (spanInfo) => {\n                  return self._handleSimpleCallbackMethod(\n                    spanInfo,\n                    originalConnect,\n                    callback,\n                    this,\n                  );\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          return originalConnect.apply(this, [callback]);\n        }\n      };\n    };\n  }\n\n  private _getPingPatchFn(clientType: \"connection\" | \"pool\" | \"poolConnection\") {\n    const self = this;\n\n    return (originalPing: Function) => {\n      return function ping(this: Connection, callback?: Function) {\n        const inputValue = { clientType };\n\n        if (self.mode === TuskDriftMode.REPLAY) {\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              if (callback) {\n                process.nextTick(() => callback(null));\n                return;\n              }\n              return Promise.resolve();\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalPing.apply(this, [callback]),\n                {\n                  name: `mysql2.${clientType}.ping`,\n                  kind: SpanKind.CLIENT,\n                  submodule: \"ping\",\n                  packageName: \"mysql2\",\n                  packageType: PackageType.MYSQL,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                },\n                (spanInfo) => {\n                  // In replay mode, just return success immediately\n                  if (callback) {\n                    process.nextTick(() => callback(null));\n                    return;\n                  }\n                  return Promise.resolve();\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => originalPing.apply(this, [callback]),\n            recordModeHandler: ({ isPreAppStart }) => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalPing.apply(this, [callback]),\n                {\n                  name: `mysql2.${clientType}.ping`,\n                  kind: SpanKind.CLIENT,\n                  submodule: \"ping\",\n                  packageName: \"mysql2\",\n                  packageType: PackageType.MYSQL,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart,\n                },\n                (spanInfo) => {\n                  return self._handleSimpleCallbackMethod(spanInfo, originalPing, callback, this);\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          return originalPing.apply(this, [callback]);\n        }\n      };\n    };\n  }\n\n  private _getEndPatchFn(clientType: \"connection\" | \"pool\" | \"poolConnection\") {\n    const self = this;\n\n    return (originalEnd: Function) => {\n      return function end(this: Connection, callback?: Function) {\n        const inputValue = { clientType };\n\n        if (self.mode === TuskDriftMode.REPLAY) {\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              if (callback) {\n                process.nextTick(() => callback(null));\n                return;\n              }\n              return Promise.resolve();\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalEnd.apply(this, [callback]),\n                {\n                  name: `mysql2.${clientType}.end`,\n                  kind: SpanKind.CLIENT,\n                  submodule: \"end\",\n                  packageName: \"mysql2\",\n                  packageType: PackageType.MYSQL,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                },\n                (spanInfo) => {\n                  // In replay mode, just return success immediately\n                  if (callback) {\n                    process.nextTick(() => callback(null));\n                    return;\n                  }\n                  return Promise.resolve();\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => originalEnd.apply(this, [callback]),\n            recordModeHandler: ({ isPreAppStart }) => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalEnd.apply(this, [callback]),\n                {\n                  name: `mysql2.${clientType}.end`,\n                  kind: SpanKind.CLIENT,\n                  submodule: \"end\",\n                  packageName: \"mysql2\",\n                  packageType: PackageType.MYSQL,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart,\n                },\n                (spanInfo) => {\n                  return self._handleSimpleCallbackMethod(spanInfo, originalEnd, callback, this);\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          return originalEnd.apply(this, [callback]);\n        }\n      };\n    };\n  }\n\n  private _handleSimpleCallbackMethod(\n    spanInfo: SpanInfo,\n    originalMethod: Function,\n    callback: Function | undefined,\n    context: any,\n  ): any {\n    if (callback) {\n      const wrappedCallback = (error: Error | null) => {\n        if (error) {\n          logger.debug(\n            `[Mysql2Instrumentation] MySQL2 method error: ${error.message} (${SpanUtils.getTraceInfo()})`,\n          );\n          try {\n            SpanUtils.endSpan(spanInfo.span, {\n              code: SpanStatusCode.ERROR,\n              message: error.message,\n            });\n          } catch (error) {\n            logger.error(`[Mysql2Instrumentation] error ending span:`, error);\n          }\n        } else {\n          logger.debug(\n            `[Mysql2Instrumentation] MySQL2 method completed successfully (${SpanUtils.getTraceInfo()})`,\n          );\n          try {\n            SpanUtils.addSpanAttributes(spanInfo.span, {\n              outputValue: { success: true },\n            });\n            SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n          } catch (error) {\n            logger.error(`[Mysql2Instrumentation] error processing response:`, error);\n          }\n        }\n        return callback(error);\n      };\n\n      return originalMethod.call(context, wrappedCallback);\n    } else {\n      // No callback provided - some methods might return a promise, some might not\n      // For methods like connect(), ping(), end(), we need to handle both cases\n      const result = originalMethod.call(context);\n\n      // Check if result is a promise\n      if (result && typeof result.then === \"function\") {\n        return result\n          .then(() => {\n            logger.debug(\n              `[Mysql2Instrumentation] MySQL2 method completed successfully (${SpanUtils.getTraceInfo()})`,\n            );\n            try {\n              SpanUtils.addSpanAttributes(spanInfo.span, {\n                outputValue: { success: true },\n              });\n              SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n            } catch (error) {\n              logger.error(`[Mysql2Instrumentation] error processing response:`, error);\n            }\n          })\n          .catch((error: Error) => {\n            logger.debug(\n              `[Mysql2Instrumentation] MySQL2 method error: ${error.message} (${SpanUtils.getTraceInfo()})`,\n            );\n            try {\n              SpanUtils.endSpan(spanInfo.span, {\n                code: SpanStatusCode.ERROR,\n                message: error.message,\n              });\n            } catch (error) {\n              logger.error(`[Mysql2Instrumentation] error ending span:`, error);\n            }\n            throw error;\n          });\n      } else {\n        // Not a promise - just return the result and end the span successfully\n        logger.debug(\n          `[Mysql2Instrumentation] MySQL2 method completed (non-promise) (${SpanUtils.getTraceInfo()})`,\n        );\n        try {\n          SpanUtils.addSpanAttributes(spanInfo.span, {\n            outputValue: { success: true },\n          });\n          SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n        } catch (error) {\n          logger.error(`[Mysql2Instrumentation] error processing response:`, error);\n        }\n        return result;\n      }\n    }\n  }\n\n  parseQueryArgs(args: any[]): Mysql2QueryConfig | null {\n    if (args.length === 0) return null;\n\n    const firstArg = args[0];\n\n    // String query: query(sql, values?, callback?)\n    if (typeof firstArg === \"string\") {\n      const config: Mysql2QueryConfig = {\n        sql: firstArg,\n        callback: typeof args[args.length - 1] === \"function\" ? args[args.length - 1] : undefined,\n      };\n      if (Array.isArray(args[1])) {\n        config.values = args[1];\n      } else if (args.length > 1 && typeof args[1] !== \"function\") {\n        config.values = [args[1]];\n      }\n      return config;\n    }\n\n    // Query options object: query(options, callback?)\n    if (typeof firstArg === \"object\" && firstArg.sql) {\n      return {\n        sql: firstArg.sql,\n        values: firstArg.values,\n        callback: firstArg.callback || (typeof args[1] === \"function\" ? args[1] : undefined),\n      };\n    }\n\n    return null;\n  }\n\n  private _handleRecordQueryInSpan(\n    spanInfo: SpanInfo,\n    originalQuery: Function,\n    queryConfig: Mysql2QueryConfig,\n    args: any[],\n    context: Connection | Pool | PoolConnection,\n  ): any {\n    const hasCallback = !!queryConfig.callback;\n\n    if (hasCallback) {\n      // Callback-based query\n      const originalCallback = queryConfig.callback!;\n      const wrappedCallback = (error: QueryError | null, results?: any, fields?: FieldPacket[]) => {\n        if (error) {\n          logger.debug(\n            `[Mysql2Instrumentation] MySQL2 query error (hasCallback): ${error.message} (${SpanUtils.getTraceInfo()})`,\n          );\n          try {\n            SpanUtils.endSpan(spanInfo.span, {\n              code: SpanStatusCode.ERROR,\n              message: error.message,\n            });\n          } catch (error) {\n            logger.error(`[Mysql2Instrumentation] error ending span:`, error);\n          }\n        } else {\n          logger.debug(\n            `[Mysql2Instrumentation] MySQL2 query completed successfully (hasCallback) (${SpanUtils.getTraceInfo()})`,\n          );\n          try {\n            this._addOutputAttributesToSpan(spanInfo, results, fields);\n            SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n          } catch (error) {\n            logger.error(`[Mysql2Instrumentation] error processing response:`, error);\n          }\n        }\n        return originalCallback(error, results, fields);\n      };\n\n      // Replace callback in args\n      try {\n        const firstArg = args[0];\n        const isOptionsObject = typeof firstArg === \"object\" && firstArg.sql;\n\n        if (isOptionsObject && firstArg.callback) {\n          // Callback was in options object\n          args[0] = { ...args[0], callback: wrappedCallback };\n        } else {\n          // Callback was separate argument (last argument)\n          const callbackIndex = args.findIndex((arg) => typeof arg === \"function\");\n          if (callbackIndex >= 0) {\n            args[callbackIndex] = wrappedCallback;\n          }\n        }\n      } catch (error) {\n        logger.error(`[Mysql2Instrumentation] error replacing callback:`, error, args);\n      }\n\n      return originalQuery.apply(context, args);\n    } else {\n      // Promise-based query or streaming query (no callback)\n      const result = originalQuery.apply(context, args);\n\n      // For streaming queries (event emitters), attach event listeners\n      // In mysql2, streaming queries are identified by checking if result has 'on' method\n      // and we're NOT using it as a promise (not calling .then() explicitly)\n      if (result && typeof result.on === \"function\") {\n        // Collect data for streaming queries\n        const streamResults: any[] = [];\n        let streamFields: any = null;\n\n        result\n          .on(\"error\", (error: Error) => {\n            logger.debug(\n              `[Mysql2Instrumentation] MySQL2 stream query error: ${error.message} (${SpanUtils.getTraceInfo()})`,\n            );\n            try {\n              SpanUtils.endSpan(spanInfo.span, {\n                code: SpanStatusCode.ERROR,\n                message: error.message,\n              });\n            } catch (error) {\n              logger.error(`[Mysql2Instrumentation] error ending span:`, error);\n            }\n          })\n          .on(\"fields\", (fields: any) => {\n            streamFields = fields;\n          })\n          .on(\"result\", (row: any) => {\n            streamResults.push(row);\n          })\n          .on(\"end\", () => {\n            logger.debug(\n              `[Mysql2Instrumentation] MySQL2 stream query completed (${SpanUtils.getTraceInfo()})`,\n            );\n            try {\n              this._addOutputAttributesToSpan(spanInfo, streamResults, streamFields);\n              SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n            } catch (error) {\n              logger.error(`[Mysql2Instrumentation] error ending span:`, error);\n            }\n          });\n      }\n\n      return result;\n    }\n  }\n\n  handleReplayQuery(\n    queryConfig: Mysql2QueryConfig,\n    inputValue: Mysql2InputValue,\n    spanInfo: SpanInfo,\n    submoduleName: string = \"query\",\n    stackTrace?: string,\n  ): EventEmitter {\n    return this.queryMock.handleReplayQuery(\n      queryConfig,\n      inputValue,\n      spanInfo,\n      submoduleName,\n      stackTrace,\n    );\n  }\n\n  handleNoOpReplayQuery(queryConfig: Mysql2QueryConfig): EventEmitter {\n    return this.queryMock.handleNoOpReplayQuery(queryConfig);\n  }\n\n  private _handleRecordPoolGetConnectionInSpan(\n    spanInfo: SpanInfo,\n    originalGetConnection: Function,\n    callback: Function | undefined,\n    context: Pool,\n  ): any {\n    if (callback) {\n      // Callback-based getConnection\n      const wrappedCallback = (error: Error | null, connection?: PoolConnection) => {\n        if (error) {\n          logger.debug(\n            `[Mysql2Instrumentation] MySQL2 Pool getConnection error: ${error.message} (${SpanUtils.getTraceInfo()})`,\n          );\n          try {\n            SpanUtils.endSpan(spanInfo.span, {\n              code: SpanStatusCode.ERROR,\n              message: error.message,\n            });\n          } catch (error) {\n            logger.error(`[Mysql2Instrumentation] error ending span:`, error);\n          }\n        } else {\n          logger.debug(\n            `[Mysql2Instrumentation] MySQL2 Pool getConnection completed successfully (${SpanUtils.getTraceInfo()})`,\n          );\n          try {\n            SpanUtils.addSpanAttributes(spanInfo.span, {\n              outputValue: {\n                connected: true,\n                hasConnection: !!connection,\n              },\n            });\n            SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n          } catch (error) {\n            logger.error(`[Mysql2Instrumentation] error processing getConnection response:`, error);\n          }\n        }\n        return callback(error, connection);\n      };\n\n      return originalGetConnection.call(context, wrappedCallback);\n    } else {\n      // Promise-based getConnection\n      const promise = originalGetConnection.call(context);\n\n      return promise\n        .then((connection: PoolConnection) => {\n          logger.debug(\n            `[Mysql2Instrumentation] MySQL2 Pool getConnection completed successfully (${SpanUtils.getTraceInfo()})`,\n          );\n          try {\n            SpanUtils.addSpanAttributes(spanInfo.span, {\n              outputValue: {\n                connected: true,\n                hasConnection: !!connection,\n              },\n            });\n            SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n          } catch (error) {\n            logger.error(`[Mysql2Instrumentation] error processing getConnection response:`, error);\n          }\n          return connection;\n        })\n        .catch((error: Error) => {\n          logger.debug(\n            `[Mysql2Instrumentation] MySQL2 Pool getConnection error: ${error.message} (${SpanUtils.getTraceInfo()})`,\n          );\n          try {\n            SpanUtils.endSpan(spanInfo.span, {\n              code: SpanStatusCode.ERROR,\n              message: error.message,\n            });\n          } catch (error) {\n            logger.error(`[Mysql2Instrumentation] error ending span:`, error);\n          }\n          throw error;\n        });\n    }\n  }\n\n  private handleNoOpReplayGetConnection(callback?: Function): any {\n    logger.debug(\n      `[Mysql2Instrumentation] Background getConnection detected, returning mock connection`,\n    );\n\n    const mockConnection = new TdMysql2ConnectionMock(this, \"pool\");\n\n    if (callback) {\n      process.nextTick(() => callback(null, mockConnection));\n      return;\n    }\n    return Promise.resolve(mockConnection);\n  }\n\n  private _handleReplayPoolGetConnection(spanInfo: SpanInfo, callback?: Function) {\n    logger.debug(`[Mysql2Instrumentation] Replaying MySQL2 Pool getConnection`);\n\n    // For pool getConnection operations, simulate returning a mock connection\n    const mockConnection = new TdMysql2ConnectionMock(this, \"pool\", spanInfo);\n\n    if (callback) {\n      process.nextTick(() => callback(null, mockConnection));\n      return;\n    } else {\n      return Promise.resolve(mockConnection);\n    }\n  }\n\n  /**\n   * Creates a patched Connection class that intercepts the constructor\n   * to handle connection event recording/replay.\n   *\n   * Wrap the Connection constructor to:\n   * - In RECORD mode: listen for 'connect'/'error' events and record them\n   * - In REPLAY mode: create a MockConnection that fakes the connection and emits recorded events\n   */\n  private _getPatchedConnectionClass(OriginalConnection: any): any {\n    const self = this;\n\n    // Create the patched constructor function\n    function TdPatchedConnection(this: any, ...args: any[]) {\n      const inputValue = { method: \"createConnection\" };\n      // RECORD mode: create real connection and record connect/error events\n      if (self.mode === TuskDriftMode.RECORD) {\n        return handleRecordMode({\n          originalFunctionCall: () => new OriginalConnection(...args),\n          recordModeHandler: ({ isPreAppStart }) => {\n            return SpanUtils.createAndExecuteSpan(\n              self.mode,\n              () => new OriginalConnection(...args),\n              {\n                name: `mysql2.connection.create`,\n                kind: SpanKind.CLIENT,\n                submodule: \"connectEvent\",\n                packageType: PackageType.MYSQL,\n                packageName: \"mysql2\",\n                instrumentationName: self.INSTRUMENTATION_NAME,\n                inputValue,\n                isPreAppStart,\n              },\n              (spanInfo) => {\n                const connection = new OriginalConnection(...args);\n\n                // Listen for successful connection - record via span\n                connection.on(\"connect\", (connectionObj: any) => {\n                  try {\n                    SpanUtils.addSpanAttributes(spanInfo.span, {\n                      outputValue: { connected: true, connectionObj },\n                    });\n                    SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n                  } catch {\n                    logger.error(`[Mysql2Instrumentation] error adding span attributes:`);\n                  }\n                });\n\n                // Listen for connection errors - record via span\n                connection.on(\"error\", (err: Error) => {\n                  try {\n                    logger.debug(\n                      `[Mysql2Instrumentation] Connection error, recording: ${err.message}`,\n                    );\n                    SpanUtils.endSpan(spanInfo.span, {\n                      code: SpanStatusCode.ERROR,\n                      message: err.message,\n                    });\n                  } catch {\n                    logger.error(`[Mysql2Instrumentation] error ending span`);\n                  }\n                });\n\n                return connection;\n              },\n            );\n          },\n          spanKind: SpanKind.CLIENT,\n        });\n      }\n\n      // REPLAY mode: create mock connection that doesn't actually connect\n      if (self.mode === TuskDriftMode.REPLAY) {\n        return handleReplayMode({\n          noOpRequestHandler: () => {\n            // For background connection creation, return a mock connection\n            return new TdMysql2ConnectionMock(self, \"connection\");\n          },\n          isServerRequest: false,\n          replayModeHandler: () => {\n            return SpanUtils.createAndExecuteSpan(\n              self.mode,\n              () => new OriginalConnection(...args),\n              {\n                name: `mysql2.connection.create`,\n                kind: SpanKind.CLIENT,\n                submodule: \"connectEvent\",\n                packageType: PackageType.MYSQL,\n                packageName: \"mysql2\",\n                instrumentationName: self.INSTRUMENTATION_NAME,\n                inputValue,\n                isPreAppStart: false,\n              },\n              (spanInfo) => {\n                // Create a mock connection class that extends the original\n                class MockConnection extends OriginalConnection {\n                  private _isConnectOrErrorEmitted = false;\n                  private _connectEventMock: TdMysql2ConnectionEventMock;\n\n                  constructor(...mockConnectionArgs: any[]) {\n                    // Clone the args and use fake host/port to prevent actual connection\n                    const clonedArgs = JSON.parse(JSON.stringify(mockConnectionArgs));\n                    if (clonedArgs[0] && clonedArgs[0].config) {\n                      clonedArgs[0].config.host = \"127.0.0.1\";\n                      clonedArgs[0].config.port = 127;\n                    } else if (clonedArgs[0]) {\n                      // Direct config object\n                      clonedArgs[0].host = \"127.0.0.1\";\n                      clonedArgs[0].port = 127;\n                    }\n\n                    // Call parent constructor with fake connection config\n                    super(...clonedArgs);\n\n                    // Get the recorded connection event\n                    this._connectEventMock = new TdMysql2ConnectionEventMock(spanInfo);\n                  }\n\n                  // Override the 'on' method to emit recorded events\n                  on(event: string, listener: Function): any {\n                    if (!this._connectEventMock) {\n                      return super.on(event, listener);\n                    }\n\n                    // Handle 'connect' event - emit recorded connection success\n                    if (event === \"connect\" && !this._isConnectOrErrorEmitted) {\n                      this._connectEventMock\n                        .getReplayedConnectionEvent(inputValue)\n                        .then(({ output }) => {\n                          if (output !== undefined) {\n                            process.nextTick(() => {\n                              listener.call(this, output);\n                              this._isConnectOrErrorEmitted = true;\n                            });\n                          }\n                        })\n                        .catch((err) => {\n                          logger.error(\n                            `[Mysql2Instrumentation] Error replaying connection event:`,\n                            err,\n                          );\n                        });\n                      return this;\n                    }\n\n                    // Handle 'error' event - just register the listener (connection should succeed in replay)\n                    if (event === \"error\" && !this._isConnectOrErrorEmitted) {\n                      // In replay mode, we don't expect errors (connection is mocked)\n                      // But register the listener anyway for compatibility\n                      return this;\n                    }\n\n                    // For other events, use the parent handler\n                    return super.on(event, listener);\n                  }\n                }\n\n                const mockConnection = new MockConnection(...args);\n\n                // Add default error listener to prevent unhandled errors\n                mockConnection.addListener(\"error\", (_err: Error) => {\n                  // Silently catch to prevent crashes\n                });\n\n                return mockConnection;\n              },\n            );\n          },\n        });\n      }\n\n      // Fallback for disabled mode\n      return new OriginalConnection(...args);\n    }\n\n    // Copy static properties from original class\n    const staticProps = Object.getOwnPropertyNames(OriginalConnection).filter(\n      (key) => ![\"length\", \"name\", \"prototype\"].includes(key),\n    );\n    for (const staticProp of staticProps) {\n      (TdPatchedConnection as any)[staticProp] = OriginalConnection[staticProp];\n    }\n\n    // Set prototype chain\n    Object.setPrototypeOf(TdPatchedConnection.prototype, OriginalConnection.prototype);\n\n    return TdPatchedConnection;\n  }\n\n  private _addOutputAttributesToSpan(\n    spanInfo: SpanInfo,\n    result?: any,\n    fields?: FieldPacket[],\n  ): void {\n    if (!result) return;\n\n    // Handle different result types\n    let outputValue: any = {};\n\n    if (Array.isArray(result)) {\n      // SELECT query - array of rows\n      outputValue = {\n        rowCount: result.length,\n        rows: result,\n        fields: fields || [],\n      };\n    } else if (result.affectedRows !== undefined) {\n      // INSERT/UPDATE/DELETE query - OkPacket or ResultSetHeader\n      outputValue = {\n        affectedRows: result.affectedRows,\n        insertId: result.insertId,\n        warningCount: result.warningCount,\n      };\n    } else {\n      // Other result types\n      outputValue = result;\n    }\n\n    SpanUtils.addSpanAttributes(spanInfo.span, {\n      outputValue,\n    });\n  }\n\n  private _wrap(\n    target: Connection | Pool | PoolConnection,\n    propertyName: string,\n    wrapper: (original: any) => any,\n  ): void {\n    wrap(target, propertyName, wrapper);\n  }\n}\n","import { TdInstrumentationBase } from \"../../core/baseClasses/TdInstrumentationBase\";\nimport { TdInstrumentationNodeModule } from \"../../core/baseClasses/TdInstrumentationNodeModule\";\nimport { TdInstrumentationConfig } from \"../../core/baseClasses/TdInstrumentationAbstract\";\nimport { SpanUtils } from \"../../../core/tracing/SpanUtils\";\nimport { TuskDriftMode } from \"../../../core/TuskDrift\";\nimport { SPAN_KIND_CONTEXT_KEY, CALLING_LIBRARY_CONTEXT_KEY } from \"../../../core/types\";\nimport { SpanKind } from \"@opentelemetry/api\";\nimport { sendUnpatchedDependencyAlert } from \"../../../core/analytics\";\nimport { logger, isNextJsRuntime } from \"../../../core/utils\";\nimport { SpanInfo } from \"../../../core/tracing/SpanUtils\";\n\nexport interface TcpInstrumentationConfig extends TdInstrumentationConfig {\n  mode?: TuskDriftMode;\n}\n\n/**\n * TCP Instrumentation for Tusk Drift\n *\n * Behavior:\n * - REPLAY mode: Intercept TCP calls and check parent span\n *   - If parent span is SERVER (inbound), log it out\n *   - If parent span is not SERVER, log warning about unpached dependency\n *   - Custom checks for HTTP related TCP calls + ProtobufCommunicator calls, no need to log those\n */\nexport class TcpInstrumentation extends TdInstrumentationBase {\n  private mode: TuskDriftMode;\n  private loggedSpans = new Set<string>(); // Track spans that have been logged\n\n  constructor(config: TcpInstrumentationConfig = {}) {\n    super(\"tcp\", config);\n    this.mode = config.mode || TuskDriftMode.DISABLED;\n\n    this._patchLoadedModules();\n  }\n\n  init(): TdInstrumentationNodeModule[] {\n    return [\n      new TdInstrumentationNodeModule({\n        name: \"net\",\n        supportedVersions: [\"*\"],\n        patch: (moduleExports: any) => this._patchNetModule(moduleExports),\n      }),\n    ];\n  }\n\n  private _patchLoadedModules(): void {\n    if (isNextJsRuntime()) {\n      // Why this is needed for Next.js:\n      // 1. Next.js's instrumentation hook (instrumentation.ts) runs DURING or AFTER framework initialization\n      // 2. By that time, database clients (pg, mysql2, etc.) may have already loaded their dependencies\n      // 3. Built-in modules like 'net' don't appear in require.cache like npm packages do\n      // 4. The net module may never get loaded naturally if:\n      //    - Database connections are lazy-loaded (only created when first needed)\n      //    - Next.js webpack optimizes away certain requires\n      //    - No database operations occur during startup\n      // 5. By force-loading 'net' here, we trigger the require-in-the-middle hooks immediately\n      // 6. This ensures that when database clients DO require('net'), they get the patched version\n      //\n      // For regular Node.js apps where TuskDrift.initialize() runs before any other imports,\n      // this force-load is redundant but harmless - the hooks would catch net naturally.\n      logger.debug(\n        `[TcpInstrumentation] Next.js environment detected - force-loading net module to ensure patching`,\n      );\n\n      try {\n        // This will trigger the require-in-the-middle hook which calls _onRequire -> _patchNetModule\n        require(\"net\");\n        logger.debug(`[TcpInstrumentation] net module force-loaded`);\n      } catch (err) {\n        logger.error(`[TcpInstrumentation] Error force-loading net module:`, err);\n      }\n    } else {\n      // Regular Node.js environment - hooks will catch net when it's first required\n      logger.debug(\n        `[TcpInstrumentation] Regular Node.js environment - hooks will catch net module on first require`,\n      );\n    }\n  }\n\n  private _patchNetModule(netModule: any): any {\n    logger.debug(`[TcpInstrumentation] Patching NET module in ${this.mode} mode`);\n\n    if (this.isModulePatched(netModule)) {\n      logger.debug(`[TcpInstrumentation] NET module already patched, skipping`);\n      return netModule;\n    }\n\n    if (this.mode !== TuskDriftMode.REPLAY) {\n      logger.debug(`[TcpInstrumentation] Not in replay mode, returning original net module`);\n      return netModule;\n    }\n\n    const originalConnect = netModule.Socket.prototype.connect;\n    const originalWrite = netModule.Socket.prototype.write;\n\n    const self = this;\n\n    // Patch net.Socket.prototype.connect\n    // Socket.prototype has other methods we can patch (read, _write, end, etc)\n    // But connect should be sufficient since we are only patching TCP to get insights into what modules we haven't patched\n    netModule.Socket.prototype.connect = function (...args: any[]) {\n      return self._handleTcpCall(\"connect\", originalConnect, args, this);\n    };\n\n    netModule.Socket.prototype.write = function (...args: any[]) {\n      return self._handleTcpCall(\"write\", originalWrite, args, this);\n    };\n\n    this.markModuleAsPatched(netModule);\n    return netModule;\n  }\n\n  private _logUnpatchedDependency(\n    methodName: string,\n    currentSpanInfo: SpanInfo,\n    socketContext: any,\n  ) {\n    const spanKey = `${currentSpanInfo.spanId}-${methodName}`;\n\n    if (!this.loggedSpans.has(spanKey)) {\n      this.loggedSpans.add(spanKey);\n      Error.stackTraceLimit = Infinity;\n\n      // NOTE: this log string is used in run.sh's\n      // If updating this log string, update the log string in the run.sh's\n      logger.warn(\n        `[TcpInstrumentation] TCP called from inbound request context, likely unpatched dependency`,\n        {\n          tcpMethod: methodName,\n          spanId: currentSpanInfo.spanId,\n          traceId: currentSpanInfo.traceId,\n          socketContext,\n        },\n      );\n\n      const stackTrace = new Error().stack || \"\";\n      const traceTestServerSpanId = SpanUtils.getCurrentReplayTraceId();\n      logger.warn(`[TcpInstrumentation] Full stack trace:\\n${stackTrace}`, {\n        traceTestServerSpanId,\n      });\n\n      Error.stackTraceLimit = 10;\n      sendUnpatchedDependencyAlert({\n        traceTestServerSpanId: traceTestServerSpanId || \"\",\n        stackTrace,\n      });\n\n      // Clean up old span entries periodically to prevent memory leaks\n      if (this.loggedSpans.size > 1000) {\n        logger.debug(\n          `[TcpInstrumentation] Cleaning up logged spans cache (${this.loggedSpans.size} entries)`,\n        );\n        this.loggedSpans.clear();\n      }\n    }\n  }\n\n  private _handleTcpCall(\n    methodName: string,\n    originalMethod: Function,\n    args: any[],\n    socketContext: any,\n  ): any {\n    // Don't want to log any HTTP response socket calls\n    if (this._isHttpResponseSocket(socketContext)) {\n      return originalMethod.apply(socketContext, args);\n    }\n\n    const currentSpanInfo = SpanUtils.getCurrentSpanInfo();\n\n    if (!currentSpanInfo) {\n      return originalMethod.apply(socketContext, args);\n    }\n\n    const callingLibrary = currentSpanInfo.context.getValue(CALLING_LIBRARY_CONTEXT_KEY);\n    const spanKind = currentSpanInfo.context.getValue(SPAN_KIND_CONTEXT_KEY);\n\n    // Don't want to log any TCP calls made to the CLI\n    if (spanKind === SpanKind.SERVER && callingLibrary !== \"ProtobufCommunicator\") {\n      // Log unpatched dependency without expensive stack trace\n      this._logUnpatchedDependency(methodName, currentSpanInfo, socketContext);\n    }\n\n    // TODO: if we are confident in our ability to detect unpatched dependencies, instead of returning the original method when we detect a unpatched dependency\n    // We can throw an error to prevent the server from making actual outbound calls in replay mode\n    return originalMethod.apply(socketContext, args);\n  }\n\n  private _isHttpResponseSocket(socketContext: any): boolean {\n    // Check if this socket is associated with HTTP response handling\n    return socketContext && socketContext._httpMessage;\n  }\n}\n","import { TdInstrumentationBase } from \"../../core/baseClasses/TdInstrumentationBase\";\nimport { TdInstrumentationNodeModule } from \"../../core/baseClasses/TdInstrumentationNodeModule\";\nimport { SpanUtils, SpanInfo } from \"../../../core/tracing/SpanUtils\";\nimport { SpanKind, SpanStatusCode } from \"@opentelemetry/api\";\nimport { TuskDriftCore, TuskDriftMode } from \"../../../core/TuskDrift\";\nimport { captureStackTrace, wrap } from \"../../core/utils\";\nimport { findMockResponseAsync } from \"../../core/utils/mockResponseUtils\";\nimport { handleRecordMode, handleReplayMode } from \"../../core/utils/modeUtils\";\nimport {\n  JsonwebtokenModuleExports,\n  JsonwebtokenInstrumentationConfig,\n  JwtVerifyInputValue,\n  JwtSignInputValue,\n  VerifyQueryConfig,\n  SignQueryConfig,\n} from \"./types\";\nimport { createMockInputValue } from \"../../../core/utils\";\nimport { logger } from \"../../../core/utils/logger\";\n\nexport class JsonwebtokenInstrumentation extends TdInstrumentationBase {\n  private readonly INSTRUMENTATION_NAME = \"JsonwebtokenInstrumentation\";\n  private mode: TuskDriftMode;\n  private tuskDrift: TuskDriftCore;\n  private _JsonWebTokenError?: any;\n  private _NotBeforeError?: any;\n  private _TokenExpiredError?: any;\n\n  constructor(config: JsonwebtokenInstrumentationConfig = {}) {\n    super(\"jsonwebtoken\", config);\n    this.mode = config.mode || TuskDriftMode.DISABLED;\n    this.tuskDrift = TuskDriftCore.getInstance();\n  }\n\n  init(): TdInstrumentationNodeModule[] {\n    return [\n      new TdInstrumentationNodeModule({\n        name: \"jsonwebtoken\",\n        supportedVersions: [\"5.*\", \"6.*\", \"7.*\", \"8.*\", \"9.*\"],\n        patch: (moduleExports: JsonwebtokenModuleExports) =>\n          this._patchJsonwebtokenModule(moduleExports),\n      }),\n    ];\n  }\n\n  private _patchJsonwebtokenModule(\n    jwtModule: JsonwebtokenModuleExports,\n  ): JsonwebtokenModuleExports {\n    if (this.isModulePatched(jwtModule)) {\n      logger.debug(`[JsonwebtokenInstrumentation] jsonwebtoken module already patched, skipping`);\n      return jwtModule;\n    }\n\n    // Store original functions and error classes\n    this._JsonWebTokenError = jwtModule.JsonWebTokenError;\n    this._NotBeforeError = jwtModule.NotBeforeError;\n    this._TokenExpiredError = jwtModule.TokenExpiredError;\n\n    // Wrap jwt.verify\n    if (jwtModule.verify) {\n      this._wrap(jwtModule, \"verify\", this._getVerifyPatchFn());\n      logger.debug(`[JsonwebtokenInstrumentation] Wrapped jwt.verify`);\n    }\n\n    // Wrap jwt.sign\n    if (jwtModule.sign) {\n      this._wrap(jwtModule, \"sign\", this._getSignPatchFn());\n      logger.debug(`[JsonwebtokenInstrumentation] Wrapped jwt.sign`);\n    }\n\n    this.markModuleAsPatched(jwtModule);\n    logger.debug(`[JsonwebtokenInstrumentation] jsonwebtoken module patching complete`);\n\n    return jwtModule;\n  }\n\n  private _getVerifyPatchFn() {\n    const self = this;\n\n    return (originalVerify: Function) => {\n      return function verify(this: any, ...args: any[]) {\n        // Parse verify arguments - jwt.verify supports multiple signatures\n        let verifyConfig: VerifyQueryConfig | null = null;\n        try {\n          verifyConfig = self.parseVerifyArgs(args);\n        } catch (error) {\n          logger.error(`[JsonwebtokenInstrumentation] error parsing verify args:`, error);\n        }\n\n        if (!verifyConfig || !verifyConfig.token) {\n          // If we can't parse the arguments, let it pass through\n          logger.debug(\n            `[JsonwebtokenInstrumentation] Could not parse jwt.verify args, executing original`,\n            args,\n          );\n          return originalVerify.apply(this, args);\n        }\n\n        const rawInputValue: JwtVerifyInputValue = {\n          token: verifyConfig.token,\n          secretOrPublicKey:\n            typeof verifyConfig.secretOrPublicKey === \"function\"\n              ? \"[Function:secretProvider]\"\n              : verifyConfig.secretOrPublicKey,\n          options: verifyConfig.options,\n        };\n\n        // Normalize the input value for consistent hashing\n        let inputValue: JwtVerifyInputValue;\n\n        try {\n          inputValue = createMockInputValue(rawInputValue);\n        } catch (error) {\n          logger.error(`[JsonwebtokenInstrumentation] error creating mock input value:`, error);\n          return originalVerify.apply(this, args);\n        }\n\n        // Handle replay mode (only if app is ready)\n        if (self.mode === TuskDriftMode.REPLAY) {\n          const stackTrace = captureStackTrace([\"JsonwebtokenInstrumentation\"]);\n\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              const hasCallback = !!verifyConfig.callback;\n              if (hasCallback) {\n                process.nextTick(() => verifyConfig.callback!(null, undefined));\n                return;\n              } else {\n                return undefined;\n              }\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              // Create span in replay mode\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalVerify.apply(this, args),\n                {\n                  name: \"jsonwebtoken.verify\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"verify\",\n                  packageName: \"jsonwebtoken\",\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                },\n                (spanInfo) => {\n                  return self.handleReplayVerify(verifyConfig, inputValue, spanInfo, stackTrace);\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => originalVerify.apply(this, args),\n            recordModeHandler: ({ isPreAppStart }) => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalVerify.apply(this, args),\n                {\n                  name: \"jsonwebtoken.verify\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"verify\",\n                  packageName: \"jsonwebtoken\",\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart,\n                },\n                (spanInfo) => {\n                  return self._handleRecordVerifyInSpan(\n                    spanInfo,\n                    originalVerify,\n                    verifyConfig,\n                    args,\n                    this,\n                  );\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          // Should never happen since we're only patching record and replay modes\n          return originalVerify.apply(this, args);\n        }\n      };\n    };\n  }\n\n  private _getSignPatchFn() {\n    const self = this;\n\n    return (originalSign: Function) => {\n      return function sign(this: any, ...args: any[]) {\n        // Parse sign arguments - jwt.sign supports multiple signatures\n        let signConfig: SignQueryConfig | null = null;\n        try {\n          signConfig = self.parseSignArgs(args);\n        } catch (error) {\n          logger.error(`[JsonwebtokenInstrumentation] error parsing sign args:`, error);\n        }\n\n        if (!signConfig || !signConfig.payload) {\n          // If we can't parse the arguments, let it pass through\n          logger.warn(\n            `[JsonwebtokenInstrumentation] Could not parse jwt.sign args, executing original`,\n            args,\n          );\n          return originalSign.apply(this, args);\n        }\n\n        const inputValue: JwtSignInputValue = {\n          payload: signConfig.payload,\n          secretOrPrivateKey: signConfig.secretOrPrivateKey,\n          options: signConfig.options,\n        };\n\n        // Handle replay mode (only if app is ready)\n        if (self.mode === TuskDriftMode.REPLAY) {\n          const stackTrace = captureStackTrace([\"JsonwebtokenInstrumentation\"]);\n\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              const hasCallback = !!signConfig.callback;\n              if (hasCallback) {\n                process.nextTick(() => signConfig.callback!(null, undefined));\n                return;\n              } else {\n                return undefined;\n              }\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              // Create span in replay mode\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalSign.apply(this, args),\n                {\n                  name: \"jsonwebtoken.sign\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"sign\",\n                  packageName: \"jsonwebtoken\",\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                },\n                (spanInfo) => {\n                  return self.handleReplaySign(signConfig, inputValue, spanInfo, stackTrace);\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => originalSign.apply(this, args),\n            recordModeHandler: ({ isPreAppStart }) => {\n              // Record mode - create span and execute real sign\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalSign.apply(this, args),\n                {\n                  name: \"jsonwebtoken.sign\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"sign\",\n                  packageName: \"jsonwebtoken\",\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart,\n                },\n                (spanInfo) => {\n                  return self._handleRecordSignInSpan(\n                    spanInfo,\n                    originalSign,\n                    signConfig,\n                    args,\n                    this,\n                  );\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          // Should never happen since we're only patching record and replay modes\n          return originalSign.apply(this, args);\n        }\n      };\n    };\n  }\n\n  parseVerifyArgs(args: any[]): VerifyQueryConfig | null {\n    if (args.length < 2) return null;\n\n    const token = args[0];\n    const secretOrPublicKey = args[1];\n\n    if (typeof token !== \"string\") return null;\n\n    const config: VerifyQueryConfig = {\n      token,\n      secretOrPublicKey,\n      callback: typeof args[args.length - 1] === \"function\" ? args[args.length - 1] : undefined,\n    };\n\n    // Check for options parameter\n    if (\n      args.length >= 3 &&\n      typeof args[2] === \"object\" &&\n      typeof args[args.length - 1] !== \"function\"\n    ) {\n      config.options = args[2];\n    } else if (args.length >= 4 && typeof args[2] === \"object\") {\n      config.options = args[2];\n    }\n\n    return config;\n  }\n\n  parseSignArgs(args: any[]): SignQueryConfig | null {\n    if (args.length < 2) return null;\n\n    const payload = args[0];\n    const secretOrPrivateKey = args[1];\n\n    const config: SignQueryConfig = {\n      payload,\n      secretOrPrivateKey,\n      callback: typeof args[args.length - 1] === \"function\" ? args[args.length - 1] : undefined,\n    };\n\n    // Check for options parameter\n    if (\n      args.length >= 3 &&\n      typeof args[2] === \"object\" &&\n      typeof args[args.length - 1] !== \"function\"\n    ) {\n      config.options = args[2];\n    } else if (args.length >= 4 && typeof args[2] === \"object\") {\n      config.options = args[2];\n    }\n\n    return config;\n  }\n\n  private _handleRecordVerifyInSpan(\n    spanInfo: SpanInfo,\n    originalVerify: Function,\n    verifyConfig: VerifyQueryConfig,\n    args: any[],\n    context: any,\n  ): any {\n    const hasCallback = !!verifyConfig.callback;\n\n    if (hasCallback) {\n      // Callback-based verify\n      const originalCallback = verifyConfig.callback!;\n      const wrappedCallback = (error: Error | null, decoded?: any) => {\n        if (error) {\n          try {\n            logger.debug(\n              `[JsonwebtokenInstrumentation] JWT verify error: ${error.message} (${SpanUtils.getTraceInfo()})`,\n            );\n            this._addErrorOutputAttributesToSpan(spanInfo, error);\n            SpanUtils.endSpan(spanInfo.span, {\n              code: SpanStatusCode.ERROR,\n              message: error.message,\n            });\n          } catch (error) {\n            logger.error(`[JsonwebtokenInstrumentation] error ending span:`, error);\n          }\n        } else {\n          try {\n            logger.debug(\n              `[JsonwebtokenInstrumentation] JWT verify completed successfully (${SpanUtils.getTraceInfo()})`,\n            );\n            this._addOutputAttributesToSpan(spanInfo, decoded);\n            SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n          } catch (error) {\n            logger.error(`[JsonwebtokenInstrumentation] error ending span:`, error);\n          }\n        }\n        return originalCallback(error, decoded);\n      };\n\n      try {\n        // Replace callback in args\n        args[args.length - 1] = wrappedCallback;\n      } catch (error) {\n        logger.error(`[JsonwebtokenInstrumentation] error replacing callback:`, error, args);\n      }\n\n      try {\n        const retVal = originalVerify.apply(context, args);\n        return retVal;\n      } catch (error: any) {\n        try {\n          logger.debug(\n            `[JsonwebtokenInstrumentation] JWT verify sync error: ${error.message} (${SpanUtils.getTraceInfo()})`,\n          );\n          this._addErrorOutputAttributesToSpan(spanInfo, error);\n          SpanUtils.endSpan(spanInfo.span, {\n            code: SpanStatusCode.ERROR,\n            message: error.message,\n          });\n        } catch (error) {\n          logger.error(`[JsonwebtokenInstrumentation] error ending span:`, error);\n        }\n        throw error;\n      }\n    } else {\n      // Synchronous verify\n      try {\n        const result = originalVerify.apply(context, args);\n        try {\n          logger.debug(\n            `[JsonwebtokenInstrumentation] JWT verify completed successfully (${SpanUtils.getTraceInfo()})`,\n          );\n          this._addOutputAttributesToSpan(spanInfo, result);\n          SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n        } catch (error) {\n          logger.error(`[JsonwebtokenInstrumentation] error ending span:`, error);\n        }\n\n        return result;\n      } catch (error: any) {\n        try {\n          logger.debug(\n            `[JsonwebtokenInstrumentation] JWT verify error: ${error.message} (${SpanUtils.getTraceInfo()})`,\n          );\n          this._addErrorOutputAttributesToSpan(spanInfo, error);\n          SpanUtils.endSpan(spanInfo.span, {\n            code: SpanStatusCode.ERROR,\n            message: error.message,\n          });\n        } catch (error) {\n          logger.error(`[JsonwebtokenInstrumentation] error ending span:`, error);\n        }\n        throw error;\n      }\n    }\n  }\n\n  private _handleRecordSignInSpan(\n    spanInfo: SpanInfo,\n    originalSign: Function,\n    signConfig: SignQueryConfig,\n    args: any[],\n    context: any,\n  ): any {\n    const hasCallback = !!signConfig.callback;\n\n    if (hasCallback) {\n      // Callback-based sign\n      const originalCallback = signConfig.callback!;\n      const wrappedCallback = (error: Error | null, token?: string) => {\n        if (error) {\n          try {\n            logger.debug(\n              `[JsonwebtokenInstrumentation] JWT sign error: ${error.message} (${SpanUtils.getTraceInfo()})`,\n            );\n            this._addErrorOutputAttributesToSpan(spanInfo, error);\n            SpanUtils.endSpan(spanInfo.span, {\n              code: SpanStatusCode.ERROR,\n              message: error.message,\n            });\n          } catch (error) {\n            logger.error(`[JsonwebtokenInstrumentation] error ending span:`, error);\n          }\n        } else {\n          try {\n            logger.debug(\n              `[JsonwebtokenInstrumentation] JWT sign completed successfully (${SpanUtils.getTraceInfo()})`,\n            );\n            this._addOutputAttributesToSpan(spanInfo, token);\n            SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n          } catch (error) {\n            logger.error(`[JsonwebtokenInstrumentation] error ending span:`, error);\n          }\n        }\n        return originalCallback(error, token);\n      };\n\n      try {\n        // Replace callback in args\n        args[args.length - 1] = wrappedCallback;\n      } catch (error) {\n        logger.error(`[JsonwebtokenInstrumentation] error replacing callback:`, error, args);\n      }\n\n      const retVal = originalSign.apply(context, args);\n      return retVal;\n    } else {\n      // Synchronous sign\n      try {\n        const result = originalSign.apply(context, args);\n        try {\n          logger.debug(\n            `[JsonwebtokenInstrumentation] JWT sign completed successfully (${SpanUtils.getTraceInfo()})`,\n          );\n          this._addOutputAttributesToSpan(spanInfo, result);\n          SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n        } catch (error) {\n          logger.error(`[JsonwebtokenInstrumentation] error ending span:`, error);\n        }\n        return result;\n      } catch (error: any) {\n        try {\n          logger.debug(\n            `[JsonwebtokenInstrumentation] JWT sign error: ${error.message} (${SpanUtils.getTraceInfo()})`,\n          );\n          this._addErrorOutputAttributesToSpan(spanInfo, error);\n          SpanUtils.endSpan(spanInfo.span, {\n            code: SpanStatusCode.ERROR,\n            message: error.message,\n          });\n        } catch (error) {\n          logger.error(`[JsonwebtokenInstrumentation] error ending span:`, error);\n        }\n        throw error;\n      }\n    }\n  }\n\n  async handleReplayVerify(\n    verifyConfig: VerifyQueryConfig,\n    inputValue: JwtVerifyInputValue,\n    spanInfo: SpanInfo,\n    stackTrace?: string,\n  ): Promise<any> {\n    logger.debug(`[JsonwebtokenInstrumentation] Replaying JWT verify`);\n\n    // Look for matching recorded response\n    const mockData = await findMockResponseAsync({\n      mockRequestData: {\n        traceId: spanInfo.traceId,\n        spanId: spanInfo.spanId,\n        name: \"jsonwebtoken.verify\",\n        packageName: \"jsonwebtoken\",\n        instrumentationName: this.INSTRUMENTATION_NAME,\n        submoduleName: \"verify\",\n        inputValue: inputValue,\n        kind: SpanKind.CLIENT,\n        stackTrace,\n      },\n      tuskDrift: this.tuskDrift,\n    });\n\n    const hasCallback = !!verifyConfig.callback;\n\n    if (!mockData) {\n      logger.warn(\n        `[JsonwebtokenInstrumentation] No mock data found for JWT verify: ${verifyConfig.token}`,\n      );\n\n      throw new Error(\n        `[JsonwebtokenInstrumentation] No matching mock found for JWT verify: ${verifyConfig.token}`,\n      );\n    }\n\n    // Handle errors from the mock data (errors are embedded in the result)\n    if (mockData.result && mockData.result.error) {\n      let error = mockData.result.error;\n\n      // Recreate specific JWT error types\n      if (this._TokenExpiredError && mockData.result.error.name === \"TokenExpiredError\") {\n        error = new this._TokenExpiredError(\n          mockData.result.error.message,\n          mockData.result.error.expiredAt,\n        );\n      } else if (this._JsonWebTokenError && mockData.result.error.name === \"JsonWebTokenError\") {\n        error = new this._JsonWebTokenError(mockData.result.error.message);\n      } else if (this._NotBeforeError && mockData.result.error.name === \"NotBeforeError\") {\n        error = new this._NotBeforeError(mockData.result.error.message, mockData.result.error.date);\n      } else {\n        // Create a generic error if we don't have the specific error class\n        error = new Error(mockData.result.error.message);\n        error.name = mockData.result.error.name;\n      }\n\n      if (hasCallback) {\n        process.nextTick(() => verifyConfig.callback!(error));\n        return;\n      } else {\n        throw error;\n      }\n    }\n\n    // Handle successful verification\n    const result = mockData.result.token !== undefined ? mockData.result.token : mockData.result;\n    if (hasCallback) {\n      process.nextTick(() => {\n        verifyConfig.callback!(null, result);\n      });\n      return;\n    } else {\n      return result;\n    }\n  }\n\n  async handleReplaySign(\n    signConfig: SignQueryConfig,\n    inputValue: JwtSignInputValue,\n    spanInfo: SpanInfo,\n    stackTrace?: string,\n  ): Promise<any> {\n    logger.debug(`[JsonwebtokenInstrumentation] Replaying JWT sign`);\n\n    // Look for matching recorded response\n    const mockData = await findMockResponseAsync({\n      mockRequestData: {\n        traceId: spanInfo?.traceId,\n        spanId: spanInfo?.spanId,\n        name: \"jsonwebtoken.sign\",\n        packageName: \"jsonwebtoken\",\n        instrumentationName: this.INSTRUMENTATION_NAME,\n        submoduleName: \"sign\",\n        inputValue: inputValue,\n        kind: SpanKind.CLIENT,\n        stackTrace,\n      },\n      tuskDrift: this.tuskDrift,\n    });\n\n    const hasCallback = !!signConfig.callback;\n\n    if (!mockData) {\n      logger.warn(`[JsonwebtokenInstrumentation] No mock data found for JWT sign`);\n      throw new Error(`[JsonwebtokenInstrumentation] No matching mock found for JWT sign`);\n    }\n\n    // Handle errors from the mock data (errors are embedded in the result)\n    if (mockData.result && mockData.result.error) {\n      let error = mockData.result.error;\n\n      // Recreate specific JWT error types\n      if (this._JsonWebTokenError && mockData.result.error.name === \"JsonWebTokenError\") {\n        error = new this._JsonWebTokenError(mockData.result.error.message);\n      } else {\n        // Create a generic error if we don't have the specific error class\n        error = new Error(mockData.result.error.message);\n        error.name = mockData.result.error.name;\n      }\n\n      if (hasCallback) {\n        process.nextTick(() => signConfig.callback!(error));\n        return;\n      } else {\n        throw error;\n      }\n    }\n\n    // Handle successful signing\n    const result = mockData.result.token !== undefined ? mockData.result.token : mockData.result;\n    if (hasCallback) {\n      process.nextTick(() => {\n        signConfig.callback!(null, result);\n      });\n      return;\n    } else {\n      return result;\n    }\n  }\n\n  private _addOutputAttributesToSpan(spanInfo: SpanInfo, result?: any): void {\n    if (!result) return;\n\n    const outputValue = typeof result === \"string\" ? { token: result } : result;\n\n    SpanUtils.addSpanAttributes(spanInfo.span, {\n      outputValue,\n    });\n  }\n\n  private _addErrorOutputAttributesToSpan(spanInfo: SpanInfo, error: Error): void {\n    const errorOutput = {\n      error: {\n        name: error.name,\n        message: error.message,\n        // Include any additional properties that specific JWT errors might have\n        ...((error as any).expiredAt && { expiredAt: (error as any).expiredAt }),\n        ...((error as any).date && { date: (error as any).date }),\n      },\n    };\n\n    SpanUtils.addSpanAttributes(spanInfo.span, {\n      outputValue: errorOutput,\n    });\n  }\n\n  private _wrap(target: any, propertyName: string, wrapper: (original: any) => any): void {\n    wrap(target, propertyName, wrapper);\n  }\n}\n","import { TdInstrumentationBase } from \"../../core/baseClasses/TdInstrumentationBase\";\nimport { TdInstrumentationNodeModule } from \"../../core/baseClasses/TdInstrumentationNodeModule\";\nimport { TuskDriftCore, TuskDriftMode } from \"../../../core/TuskDrift\";\nimport { JwksRsaModuleExports, JwksRsaInstrumentationConfig } from \"./types\";\nimport { logger } from \"../../../core/utils/logger\";\n\n/**\n * JwksRsa is just patched to override rate limits enforced on the client side in replay mode\n *\n * No spans are being recorded or replayed for jwks-rsa.\n */\nexport class JwksRsaInstrumentation extends TdInstrumentationBase {\n  private tuskDrift: TuskDriftCore;\n\n  constructor(config: JwksRsaInstrumentationConfig = {}) {\n    super(\"jwks-rsa\", config);\n    this.tuskDrift = TuskDriftCore.getInstance();\n  }\n\n  init(): TdInstrumentationNodeModule[] {\n    return [\n      new TdInstrumentationNodeModule({\n        name: \"jwks-rsa\",\n        supportedVersions: [\"1.*\", \"2.*\", \"3.*\"],\n        patch: (moduleExports: JwksRsaModuleExports) => this._patchJwksRsaModule(moduleExports),\n      }),\n    ];\n  }\n\n  private _patchJwksRsaModule(jwksModule: any): any {\n    logger.debug(\n      `[JwksRsaInstrumentation] Patching jwks-rsa module, current mode: ${this.tuskDrift.getMode()}`,\n    );\n\n    if (this.isModulePatched(jwksModule)) {\n      logger.debug(`[JwksRsaInstrumentation] jwks-rsa module already patched, skipping`);\n      return jwksModule;\n    }\n\n    const self = this;\n\n    if (jwksModule.expressJwtSecret) {\n      const originalExpressJwtSecret = jwksModule.expressJwtSecret;\n      jwksModule.expressJwtSecret = function (options: any) {\n        logger.debug(`[JwksRsaInstrumentation] expressJwtSecret called with options:`, options);\n        const modifiedOptions = { ...options };\n        // Only disable rate limiting in replay mode\n        if (self.tuskDrift.getMode() === TuskDriftMode.REPLAY) {\n          logger.debug(\n            `[JwksRsaInstrumentation] REPLAY MODE - Disabling rate limiting for expressJwtSecret`,\n          );\n          modifiedOptions.rateLimit = false;\n          delete modifiedOptions.jwksRequestsPerMinute;\n          logger.debug(`[JwksRsaInstrumentation] Modified options:`, modifiedOptions);\n        }\n        return originalExpressJwtSecret(modifiedOptions);\n      };\n      logger.debug(`[JwksRsaInstrumentation] Patched expressJwtSecret method`);\n    }\n\n    this.markModuleAsPatched(jwksModule);\n\n    logger.debug(`[JwksRsaInstrumentation] jwks-rsa module patching complete`);\n    return jwksModule;\n  }\n}\n","import * as crypto from \"crypto\";\nimport jp from \"jsonpath\";\nimport { SpanKind } from \"@opentelemetry/api\";\nimport { FetchInputValue, FetchOutputValue } from \"./types\";\nimport { OneOf } from \"src/core/types\";\nimport { TransformConfigs } from \"../types\";\n\nexport interface FetchTransform {\n  matcher: FetchTransformMatcher;\n  action: FetchTransformAction;\n}\n\n/** A matcher config. An element is matched iff *all* conditions specified\n * here are true. Only one target field is allowed, but any of the common\n * fields may be provided.\n * */\nexport type FetchTransformMatcher = {\n  /** Request direction relative to this service. Fetch is always\n   * outbound, but included for consistency. */\n  direction?: \"outbound\";\n  /** HTTP method: array of methods like [\"GET\", \"POST\"]. Empty array matches\n   * all methods. */\n  method?: (\"GET\" | \"POST\" | \"DELETE\" | \"PUT\")[];\n  /** Regex to match against URL path e.g. \"/api/user/.*\" */\n  pathPattern?: string;\n  /** Regex to match against hostname e.g. \"api.example.com\" */\n  host?: string;\n} & OneOf<FetchTransformMatchingFields>;\n\n/** Target fields. See doc for more info on why it's split and not part of the\n * matcher configs . */\nexport type FetchTransformMatchingFields = {\n  /** JSONPath expression e.g. \"$.user.password\" */\n  jsonPath: string;\n  /** Query parameter name */\n  queryParam: string;\n  /** Header name */\n  headerName: string;\n  /** Transform the entire URL path */\n  urlPath: boolean;\n  /** Transform the entire request/response body */\n  fullBody: boolean;\n};\n\nexport type FetchTransformAction =\n  | {\n      type: \"redact\";\n      /** Prefix for hash (default: \"REDACTED_\") */\n      hashPrefix?: string;\n    }\n  | {\n      type: \"mask\";\n      /** Character to use for masking (default: \"*\") */\n      maskChar?: string;\n    }\n  | {\n      type: \"replace\";\n      /** Static replacement value (required) */\n      replaceWith: string;\n    }\n  | {\n      type: \"drop\";\n    };\n\nexport interface FetchSpanData {\n  traceId: string;\n  spanId: string;\n  kind: SpanKind;\n  inputValue?: FetchInputValue;\n  outputValue?: FetchOutputValue;\n  transformMetadata?: {\n    transformed: boolean;\n    actions: TransformAction[];\n  };\n}\n\ntype CompiledTransform = (span: FetchSpanData) => TransformAction | undefined;\n\ntype TransformAction = {\n  type: \"redact\" | \"mask\" | \"replace\" | \"drop\";\n  field: string;\n  reason: string;\n  description?: string;\n};\n\ntype ActionFunction = (value: string) => string;\n\ntype MatcherFunction = (span: FetchSpanData) => boolean;\n\n/**\n * Creates an empty FetchInputValue object for dropped spans\n */\nfunction createEmptyInputValue(): FetchInputValue {\n  return {\n    url: \"\",\n    method: \"\",\n    headers: {},\n  };\n}\n\n/**\n * Creates an empty FetchOutputValue object for dropped spans\n */\nfunction createEmptyOutputValue(): FetchOutputValue {\n  return {\n    status: 0,\n    statusText: \"\",\n    headers: {},\n    bodySize: 0,\n  };\n}\n\nexport class FetchTransformEngine {\n  private compiledTransforms: CompiledTransform[] = [];\n\n  constructor(transformConfigs?: TransformConfigs) {\n    if (transformConfigs?.fetch) {\n      this.compiledTransforms = transformConfigs.fetch.map((transform) =>\n        this.compileTransform(transform),\n      );\n    }\n  }\n\n  applyTransforms(spanData: FetchSpanData): FetchSpanData {\n    const actions: TransformAction[] = [];\n\n    for (const compiledTransform of this.compiledTransforms) {\n      const action = compiledTransform(spanData);\n      if (action) {\n        actions.push(action);\n      }\n    }\n\n    if (actions.length > 0) {\n      spanData.transformMetadata = {\n        transformed: true,\n        actions,\n      };\n    }\n\n    return spanData;\n  }\n\n  private compileTransform(transform: FetchTransform): CompiledTransform {\n    const { matcher, action } = transform;\n\n    const matcherFunction = this.compileMatcher(matcher);\n    if (action.type === \"drop\") {\n      return (span) => {\n        if (!matcherFunction(span)) {\n          return;\n        }\n\n        // Drop all sensitive data\n        if (span.inputValue) {\n          span.inputValue = createEmptyInputValue();\n        }\n\n        if (span.outputValue) {\n          span.outputValue = createEmptyOutputValue();\n        }\n\n        return {\n          type: \"drop\",\n          field: \"entire_span\",\n          reason: \"transforms\",\n          description: this.describeTransform(transform),\n        };\n      };\n    }\n\n    const compiledAction = this.compileAction(matcher, action);\n    const fieldDescription = this.getFieldDescription(matcher);\n\n    return (span) => {\n      if (!matcherFunction(span)) {\n        return;\n      }\n\n      const result = compiledAction(span);\n      if (result) {\n        return {\n          type: action.type,\n          field: fieldDescription,\n          reason: \"transforms\",\n        };\n      }\n\n      return;\n    };\n  }\n\n  private compileAction(\n    matcher: FetchTransformMatcher,\n    action: FetchTransformAction,\n  ): (span: FetchSpanData) => boolean {\n    const actionFunction = this.compileActionFunction(action);\n\n    if (matcher.jsonPath) {\n      return this.compileJsonPathAction(matcher.jsonPath, actionFunction);\n    }\n    if (matcher.queryParam) {\n      return this.compileQueryParamAction(matcher.queryParam, actionFunction);\n    }\n    if (matcher.headerName) {\n      return this.compileHeaderAction(matcher.headerName, actionFunction);\n    }\n    if (matcher.urlPath) {\n      return this.compileUrlPathAction(actionFunction);\n    }\n    if (matcher.fullBody) {\n      return this.compileFullBodyAction(actionFunction);\n    }\n\n    return () => false;\n  }\n\n  private compileMatcher(matcher: FetchTransformMatcher): MatcherFunction {\n    const checks: MatcherFunction[] = [];\n\n    // Fetch is always CLIENT kind\n    checks.push((span) => span.kind === SpanKind.CLIENT);\n\n    if (matcher.method) {\n      // Empty array means match all methods (wildcard)\n      if (matcher.method.length === 0) {\n        // No check needed - matches all methods\n      } else {\n        const methods = matcher.method.map((method) => method.toUpperCase());\n        checks.push((span) => {\n          const spanMethod = span.inputValue?.method?.toUpperCase();\n          return spanMethod ? methods.includes(spanMethod) : false;\n        });\n      }\n    }\n\n    if (matcher.pathPattern) {\n      try {\n        const pattern = new RegExp(matcher.pathPattern);\n        checks.push((span) => {\n          const url = span.inputValue?.url;\n          if (!url) return false;\n          try {\n            const urlObj = new URL(url);\n            return pattern.test(urlObj.pathname);\n          } catch {\n            return false;\n          }\n        });\n      } catch (error) {\n        throw new Error(\n          `Invalid path pattern \"${matcher.pathPattern}\": ${error instanceof Error ? error.message : String(error)}`,\n        );\n      }\n    }\n\n    if (matcher.host) {\n      try {\n        const hostPattern = new RegExp(matcher.host);\n        checks.push((span) => {\n          const url = span.inputValue?.url;\n          if (!url) return false;\n          try {\n            const urlObj = new URL(url);\n            return hostPattern.test(urlObj.hostname);\n          } catch {\n            return false;\n          }\n        });\n      } catch (error) {\n        throw new Error(\n          `Invalid host pattern \"${matcher.host}\": ${error instanceof Error ? error.message : String(error)}`,\n        );\n      }\n    }\n\n    if (checks.length === 0) {\n      return () => true;\n    }\n    if (checks.length === 1) {\n      return checks[0];\n    }\n\n    return (span) => checks.every((check) => check(span));\n  }\n\n  private compileJsonPathAction(\n    jsonPath: string,\n    actionFunction: ActionFunction,\n  ): (span: FetchSpanData) => boolean {\n    return (span) => {\n      let applied = false;\n\n      // Apply to request body (inputValue)\n      if (span.inputValue?.body) {\n        try {\n          let bodyObj;\n          const body = span.inputValue.body;\n\n          if (typeof body === \"string\") {\n            try {\n              const decoded = Buffer.from(body, \"base64\").toString(\"utf8\");\n              bodyObj = JSON.parse(decoded);\n            } catch (e) {\n              // If decoding/parsing fails, body might not be JSON\n              return false;\n            }\n          } else {\n            bodyObj = body;\n          }\n\n          const nodes = jp.apply(bodyObj, jsonPath, actionFunction);\n\n          // Re-encode the modified body as base64\n          if (typeof body === \"string\" && nodes.length > 0) {\n            const reencoded = Buffer.from(JSON.stringify(bodyObj)).toString(\"base64\");\n            span.inputValue.body = reencoded;\n            applied = true;\n          }\n        } catch (error) {\n          // ignore\n        }\n      }\n\n      // Apply to response body (outputValue)\n      if (span.outputValue?.body) {\n        try {\n          let bodyObj;\n          const body = span.outputValue.body;\n\n          if (typeof body === \"string\") {\n            try {\n              const decoded = Buffer.from(body, \"base64\").toString(\"utf8\");\n              bodyObj = JSON.parse(decoded);\n            } catch (e) {\n              // If decoding/parsing fails, body might not be JSON\n              return applied;\n            }\n          } else {\n            bodyObj = body;\n          }\n\n          const nodes = jp.apply(bodyObj, jsonPath, actionFunction);\n\n          // Re-encode the modified body as base64\n          if (typeof body === \"string\" && nodes.length > 0) {\n            const reencoded = Buffer.from(JSON.stringify(bodyObj)).toString(\"base64\");\n            span.outputValue.body = reencoded;\n            applied = true;\n          }\n        } catch (error) {\n          // ignore\n        }\n      }\n\n      return applied;\n    };\n  }\n\n  private compileHeaderAction(\n    headerName: string,\n    actionFunction: ActionFunction,\n  ): (span: FetchSpanData) => boolean {\n    const lowerHeader = headerName.toLowerCase();\n\n    return (span) => {\n      let applied = false;\n\n      // Transform request headers\n      if (span.inputValue?.headers) {\n        for (const key of Object.keys(span.inputValue.headers)) {\n          if (key.toLowerCase() === lowerHeader) {\n            span.inputValue.headers[key] = actionFunction(span.inputValue.headers[key]);\n            applied = true;\n          }\n        }\n      }\n\n      // Transform response headers\n      if (span.outputValue?.headers) {\n        for (const key of Object.keys(span.outputValue.headers)) {\n          if (key.toLowerCase() === lowerHeader) {\n            span.outputValue.headers[key] = actionFunction(span.outputValue.headers[key]);\n            applied = true;\n          }\n        }\n      }\n\n      return applied;\n    };\n  }\n\n  private compileQueryParamAction(\n    queryParam: string,\n    actionFunction: ActionFunction,\n  ): (span: FetchSpanData) => boolean {\n    return (span) => {\n      if (!span.inputValue?.url) {\n        return false;\n      }\n\n      try {\n        const url = new URL(span.inputValue.url);\n        if (url.searchParams.has(queryParam)) {\n          const oldValue = url.searchParams.get(queryParam);\n          if (oldValue !== null) {\n            const newValue = actionFunction(oldValue);\n            url.searchParams.set(queryParam, newValue);\n            span.inputValue.url = url.toString();\n            return true;\n          }\n        }\n      } catch {\n        // ignore invalid URLs\n      }\n\n      return false;\n    };\n  }\n\n  private compileFullBodyAction(actionFunction: ActionFunction): (span: FetchSpanData) => boolean {\n    return (span) => {\n      let applied = false;\n\n      // Transform request body\n      if (span.inputValue && span.inputValue.body !== undefined) {\n        const body = span.inputValue.body;\n        if (typeof body === \"string\") {\n          try {\n            const decoded = Buffer.from(body, \"base64\").toString(\"utf8\");\n            const transformed = actionFunction(decoded);\n            span.inputValue.body = Buffer.from(transformed).toString(\"base64\");\n            applied = true;\n          } catch (error) {\n            // If not valid base64, treat as plain string\n            span.inputValue.body = Buffer.from(actionFunction(body)).toString(\"base64\");\n            applied = true;\n          }\n        } else {\n          span.inputValue.body = Buffer.from(actionFunction(JSON.stringify(body))).toString(\n            \"base64\",\n          );\n          applied = true;\n        }\n      }\n\n      // Transform response body\n      if (span.outputValue && span.outputValue.body !== undefined) {\n        const body = span.outputValue.body;\n        if (typeof body === \"string\") {\n          try {\n            const decoded = Buffer.from(body, \"base64\").toString(\"utf8\");\n            const transformed = actionFunction(decoded);\n            span.outputValue.body = Buffer.from(transformed).toString(\"base64\");\n            applied = true;\n          } catch (error) {\n            // If not valid base64, treat as plain string\n            span.outputValue.body = Buffer.from(actionFunction(body)).toString(\"base64\");\n            applied = true;\n          }\n        } else {\n          span.outputValue.body = Buffer.from(actionFunction(JSON.stringify(body))).toString(\n            \"base64\",\n          );\n          applied = true;\n        }\n      }\n\n      return applied;\n    };\n  }\n\n  private compileUrlPathAction(actionFunction: ActionFunction): (span: FetchSpanData) => boolean {\n    return (span) => {\n      if (span.inputValue?.url) {\n        try {\n          const urlObj = new URL(span.inputValue.url);\n          urlObj.pathname = actionFunction(urlObj.pathname);\n          span.inputValue.url = urlObj.toString();\n          return true;\n        } catch {\n          // If URL parsing fails, transform the whole URL string\n          span.inputValue.url = actionFunction(span.inputValue.url);\n          return true;\n        }\n      }\n      return false;\n    };\n  }\n\n  private compileActionFunction(action: FetchTransformAction): ActionFunction {\n    switch (action.type) {\n      case \"redact\":\n        return (value) => {\n          const prefix = action.hashPrefix || \"REDACTED_\";\n          const hash = crypto.createHash(\"sha256\").update(String(value)).digest(\"hex\");\n          return `${prefix}${hash.substring(0, 12)}...`;\n        };\n      case \"mask\":\n        return (value) => {\n          const maskChar = action.maskChar || \"*\";\n          return maskChar.repeat(value.length);\n        };\n      case \"replace\":\n        return () => action.replaceWith;\n      default:\n        return (value) => value;\n    }\n  }\n\n  private getFieldDescription(matcher: FetchTransformMatcher): string {\n    if (matcher.jsonPath) return `jsonPath:${matcher.jsonPath}`;\n    if (matcher.queryParam) return `queryParam:${matcher.queryParam}`;\n    if (matcher.headerName) return `header:${matcher.headerName}`;\n    if (matcher.urlPath) return \"urlPath\";\n    if (matcher.fullBody) return \"fullBody\";\n    return \"unknown\";\n  }\n\n  private describeTransform(transform: FetchTransform): string {\n    return JSON.stringify(transform.matcher);\n  }\n}\n","import { TdInstrumentationBase } from \"../../core/baseClasses/TdInstrumentationBase\";\nimport { TdInstrumentationNodeModule } from \"../../core/baseClasses/TdInstrumentationNodeModule\";\nimport { SpanInfo, SpanUtils } from \"../../../core/tracing/SpanUtils\";\nimport { SpanKind, SpanStatusCode } from \"@opentelemetry/api\";\nimport { TuskDriftCore, TuskDriftMode } from \"../../../core/TuskDrift\";\nimport { getDecodedType, httpBodyEncoder } from \"../http/utils\";\nimport { captureStackTrace, isTuskDriftIngestionUrl, TUSK_SKIP_HEADER } from \"../../core/utils\";\nimport { findMockResponseAsync } from \"../../core/utils/mockResponseUtils\";\nimport { handleReplayMode, handleRecordMode } from \"../../core/utils/modeUtils\";\nimport { FetchInputValue, FetchOutputValue, FetchInstrumentationConfig } from \"./types\";\nimport { PackageType } from \"@use-tusk/drift-schemas/core/span\";\nimport { EncodingType } from \"../../../core/tracing/JsonSchemaHelper\";\nimport { logger } from \"../../../core/utils/logger\";\nimport { FetchSpanData, FetchTransformEngine } from \"./FetchTransformEngine\";\n\n/**\n * Fetch API instrumentation for capturing requests made via fetch()\n * This covers libraries like @octokit/rest, axios (when using fetch adapter), etc.\n */\nexport class FetchInstrumentation extends TdInstrumentationBase {\n  private readonly INSTRUMENTATION_NAME = \"FetchInstrumentation\";\n  private mode: TuskDriftMode;\n  private tuskDrift: TuskDriftCore;\n  private originalFetch?: typeof globalThis.fetch;\n  private transformEngine: FetchTransformEngine;\n\n  constructor(config: FetchInstrumentationConfig = {}) {\n    super(\"fetch\", config);\n    this.mode = config.mode || TuskDriftMode.DISABLED;\n    this.tuskDrift = TuskDriftCore.getInstance();\n    this.transformEngine = new FetchTransformEngine(config.transforms);\n  }\n\n  init(): TdInstrumentationNodeModule[] {\n    // Fetch is a global, not a module, so we patch it directly\n    // Fetch doesn't need to be reuired'd like other node modules hence we just directly patch it\n    this.patchGlobalFetch();\n    return [];\n  }\n\n  private patchGlobalFetch(): void {\n    // Unlike other instrumentations that patch modules when they're required (lazy patching),\n    // fetch instrumentation patches the global fetch function immediately during init() since\n    // fetch is a global API, not a module. This means we need to explicitly check if the\n    // instrumentation is enabled before patching, otherwise we'd always patch globalThis.fetch\n    // even when the user has disabled fetch instrumentation.\n    if (this.mode === TuskDriftMode.DISABLED || !this._config.enabled) {\n      return;\n    }\n\n    if (typeof globalThis.fetch !== \"function\") {\n      logger.debug(\"fetch not available in this environment\");\n      return;\n    }\n\n    this.originalFetch = globalThis.fetch;\n    const self = this;\n\n    globalThis.fetch = function (\n      input: string | URL | Request,\n      init?: RequestInit,\n    ): Promise<Response> {\n      const stackTrace = captureStackTrace([\"FetchInstrumentation\"]);\n      return self._handleFetchRequest(input, init, stackTrace);\n    } as typeof globalThis.fetch;\n\n    logger.debug(\"[FetchInstrumentation] Global fetch patching complete\");\n  }\n\n  private async _handleFetchRequest(\n    input: string | URL | Request,\n    init?: RequestInit,\n    stackTrace?: string,\n  ): Promise<Response> {\n    // Parse request details\n    const url = typeof input === \"string\" ? input : input instanceof URL ? input.href : input.url;\n    const method = init?.method || \"GET\";\n    const headers = init?.headers || {};\n\n    let normalizedHeaders = {};\n    let encodedBody: any = init?.body;\n    try {\n      normalizedHeaders = this._normalizeHeaders(headers);\n      encodedBody = init?.body ? ((await this._encodeRequestBody(init?.body)) as any) : init?.body;\n    } catch (error) {\n      logger.error(`[FetchInstrumentation] error normalizing headers:`, error);\n    }\n\n    // Ignore SDK's own drift export calls\n    const shouldSkip =\n      (normalizedHeaders as any)[TUSK_SKIP_HEADER] === \"true\" || isTuskDriftIngestionUrl(url);\n\n    if (shouldSkip) {\n      return this.originalFetch!(input, init);\n    }\n\n    const inputValue: FetchInputValue = {\n      url,\n      method,\n      headers: normalizedHeaders,\n      body: encodedBody,\n    };\n\n    // Handle replay mode (only if app is ready)\n    if (this.mode === TuskDriftMode.REPLAY) {\n      return handleReplayMode({\n        noOpRequestHandler: () => {\n          const mockResponse = new Response(null, {\n            status: 200,\n            statusText: \"OK\",\n          });\n\n          return Promise.resolve(mockResponse);\n        },\n        isServerRequest: false,\n        replayModeHandler: () => {\n          // Create span in replay mode\n          return SpanUtils.createAndExecuteSpan(\n            this.mode,\n            () => this.originalFetch!(input, init),\n            {\n              name: url,\n              kind: SpanKind.CLIENT,\n              packageName: \"fetch\",\n              packageType: PackageType.HTTP,\n              instrumentationName: this.INSTRUMENTATION_NAME,\n              submodule: inputValue.method,\n              inputValue,\n              isPreAppStart: false,\n            },\n            (spanInfo) => {\n              return this._handleReplayFetch(inputValue, spanInfo, stackTrace);\n            },\n          );\n        },\n      });\n    } else if (this.mode === TuskDriftMode.RECORD) {\n      return handleRecordMode({\n        originalFunctionCall: () => this.originalFetch!(input, init),\n        recordModeHandler: ({ isPreAppStart }) =>\n          this._handleRecordFetch(input, inputValue, isPreAppStart, init),\n        spanKind: SpanKind.CLIENT,\n      });\n    } else {\n      // Should never happen since we're only patching record and replay modes\n      return this.originalFetch!(input, init);\n    }\n  }\n\n  private _handleRecordFetch(\n    input: string | URL | Request,\n    inputValue: FetchInputValue,\n    isPreAppStart: boolean,\n    init?: RequestInit,\n  ): Promise<Response> {\n    return SpanUtils.createAndExecuteSpan(\n      this.mode,\n      () => this.originalFetch!(input, init),\n      {\n        name: inputValue.url,\n        kind: SpanKind.CLIENT,\n        packageName: \"fetch\",\n        packageType: PackageType.HTTP,\n        instrumentationName: this.INSTRUMENTATION_NAME,\n        submodule: inputValue.method,\n        inputValue,\n        inputSchemaMerges: {\n          ...(inputValue.body && {\n            body: {\n              encoding: EncodingType.BASE64,\n              decodedType: getDecodedType(inputValue.headers[\"content-type\"] || \"\"),\n            },\n          }),\n          ...(inputValue.headers && {\n            headers: {\n              matchImportance: 0,\n            },\n          }),\n        },\n        isPreAppStart,\n      },\n      (spanInfo) => {\n        return this.originalFetch!(input, init)\n          .then(async (response) => {\n            // Clone response to read body without consuming it\n            try {\n              const responseClone = response.clone();\n              const encodedBody = await this._encodeResponseBody(responseClone);\n\n              const outputValue = {\n                status: response.status,\n                statusText: response.statusText,\n                headers: this._responseHeadersToObject(response.headers),\n                body: encodedBody,\n                bodySize: encodedBody?.length || 0,\n              } as FetchOutputValue;\n\n              // Apply transforms to span data before adding attributes\n              const spanData: FetchSpanData = {\n                traceId: spanInfo.traceId,\n                spanId: spanInfo.spanId,\n                kind: SpanKind.CLIENT,\n                inputValue,\n                outputValue,\n              };\n              this.transformEngine.applyTransforms(spanData);\n\n              SpanUtils.addSpanAttributes(spanInfo.span, {\n                inputValue: spanData.inputValue,\n                outputValue: spanData.outputValue,\n                outputSchemaMerges: {\n                  body: {\n                    encoding: EncodingType.BASE64,\n                    decodedType: getDecodedType(\n                      (spanData.outputValue as any).headers?.[\"content-type\"] || \"\",\n                    ),\n                  },\n                  headers: {\n                    matchImportance: 0,\n                  },\n                },\n                ...(spanData.transformMetadata && {\n                  transformMetadata: spanData.transformMetadata,\n                }),\n              });\n\n              const status =\n                response.status >= 400\n                  ? { code: SpanStatusCode.ERROR, message: `HTTP ${response.status}` }\n                  : { code: SpanStatusCode.OK };\n\n              SpanUtils.endSpan(spanInfo.span, status);\n            } catch (error) {\n              logger.error(`[FetchInstrumentation] error processing response body:`, error);\n            }\n            return response;\n          })\n          .catch((error) => {\n            try {\n              SpanUtils.endSpan(spanInfo.span, {\n                code: SpanStatusCode.ERROR,\n                message: error.message,\n              });\n            } catch (error) {\n              logger.error(`[FetchInstrumentation] error ending span:`, error);\n            }\n            throw error;\n          });\n      },\n    );\n  }\n\n  private async _handleReplayFetch(\n    inputValue: FetchInputValue,\n    spanInfo: SpanInfo,\n    stackTrace?: string,\n  ): Promise<Response> {\n    const mockData = await findMockResponseAsync({\n      mockRequestData: {\n        traceId: spanInfo.traceId,\n        spanId: spanInfo.spanId,\n        name: inputValue.url,\n        packageName: \"fetch\",\n        packageType: PackageType.HTTP,\n        instrumentationName: this.INSTRUMENTATION_NAME,\n        submoduleName: inputValue.method,\n        inputValue,\n        kind: SpanKind.CLIENT,\n        stackTrace,\n      },\n      tuskDrift: this.tuskDrift,\n      inputValueSchemaMerges: {\n        ...(inputValue.body && {\n          body: {\n            encoding: EncodingType.BASE64,\n            decodedType: getDecodedType(inputValue.headers[\"content-type\"] || \"\"),\n          },\n        }),\n        ...(inputValue.headers && {\n          headers: {\n            matchImportance: 0,\n          },\n        }),\n      },\n    });\n\n    if (!mockData) {\n      logger.warn(\n        `[FetchInstrumentation] No mock data found for fetch request with input value: ${JSON.stringify(inputValue)}`,\n      );\n      throw new Error(`[FetchInstrumentation] No matching mock found for fetch request`);\n    }\n\n    const { result } = mockData;\n    const responseBody = this._constructFetchResponseBody(result);\n\n    const mockResponse = new Response(responseBody, {\n      status: result.status,\n      statusText: result.statusText,\n      headers: new Headers(result.headers),\n    });\n\n    return Promise.resolve(mockResponse);\n  }\n\n  private _normalizeHeaders(headers: any): Record<string, string> {\n    if (headers instanceof Headers) {\n      const result: Record<string, string> = {};\n      headers.forEach((value, key) => {\n        result[key.toLowerCase()] = value;\n      });\n      return result;\n    } else if (Array.isArray(headers)) {\n      const result: Record<string, string> = {};\n      headers.forEach(([key, value]) => {\n        result[key.toLowerCase()] = value;\n      });\n      return result;\n    } else if (typeof headers === \"object\" && headers !== null) {\n      const result: Record<string, string> = {};\n      Object.entries(headers).forEach(([key, value]) => {\n        if (typeof value === \"string\") {\n          result[key.toLowerCase()] = value;\n        }\n      });\n      return result;\n    }\n    return {};\n  }\n\n  private async _encodeRequestBody(body: any): Promise<string | undefined> {\n    try {\n      let bodyBuffer: Buffer;\n\n      if (body === null) {\n        return undefined;\n      }\n\n      if (typeof body === \"string\") {\n        // String body - convert to buffer\n        bodyBuffer = Buffer.from(body, \"utf8\");\n      } else if (body instanceof ArrayBuffer) {\n        // ArrayBuffer - convert directly\n        bodyBuffer = Buffer.from(body);\n      } else if (\n        body instanceof Uint8Array ||\n        body instanceof Int8Array ||\n        body instanceof Uint16Array ||\n        body instanceof Int16Array ||\n        body instanceof Uint32Array ||\n        body instanceof Int32Array ||\n        body instanceof Float32Array ||\n        body instanceof Float64Array ||\n        body instanceof DataView\n      ) {\n        // TypedArray or DataView - convert to buffer\n        bodyBuffer = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n      } else if (body instanceof URLSearchParams) {\n        // URLSearchParams - convert to string first\n        bodyBuffer = Buffer.from(body.toString(), \"utf8\");\n      } else if (body instanceof FormData) {\n        // FormData - this is tricky, we need to serialize it\n        // For now, let's skip encoding FormData as it's complex\n        logger.warn(\"FormData encoding not yet supported, skipping body encoding\");\n        return undefined;\n      } else if (body instanceof Blob) {\n        // Blob - read as array buffer\n        const arrayBuffer = await body.arrayBuffer();\n        bodyBuffer = Buffer.from(arrayBuffer);\n      } else if (body && typeof body === \"object\" && Symbol.asyncIterator in body) {\n        // AsyncIterable<Uint8Array>\n        const chunks: Uint8Array[] = [];\n        for await (const chunk of body as AsyncIterable<Uint8Array>) {\n          chunks.push(chunk);\n        }\n        bodyBuffer = Buffer.concat(chunks.map((chunk) => Buffer.from(chunk)));\n      } else if (body && typeof body === \"object\" && Symbol.iterator in body) {\n        // Iterable<Uint8Array>\n        const chunks: Uint8Array[] = [];\n        for (const chunk of body as Iterable<Uint8Array>) {\n          chunks.push(chunk);\n        }\n        bodyBuffer = Buffer.concat(chunks.map((chunk) => Buffer.from(chunk)));\n      } else {\n        // Unknown type\n        logger.warn(\"Unknown body type, cannot encode:\", typeof body, body);\n        return undefined;\n      }\n\n      return await httpBodyEncoder({ bodyBuffer });\n    } catch (error) {\n      logger.warn(\"Failed to encode request body:\", error);\n      return undefined;\n    }\n  }\n\n  /**\n   * Encode response body using existing httpBodyEncoder\n   */\n  private async _encodeResponseBody(response: Response): Promise<string | undefined> {\n    try {\n      if (!response.body) {\n        return undefined;\n      }\n      const arrayBuffer = await response.arrayBuffer();\n      const bodyBuffer = Buffer.from(arrayBuffer);\n\n      return await httpBodyEncoder({ bodyBuffer });\n    } catch (error) {\n      return undefined;\n    }\n  }\n\n  /**\n   * Construct response body for replay mode\n   */\n  private _constructFetchResponseBody(result: FetchOutputValue): Buffer<ArrayBuffer> | null {\n    if (result.body) {\n      return Buffer.from(result.body, \"base64\");\n    }\n    return null;\n  }\n\n  private _responseHeadersToObject(headers: Headers): Record<string, string> {\n    const result: Record<string, string> = {};\n    headers.forEach((value, key) => {\n      result[key.toLowerCase()] = value;\n    });\n    return result;\n  }\n}\n","import { TdInstrumentationConfig } from \"../../core/baseClasses/TdInstrumentationAbstract\";\nimport { TuskDriftMode } from \"../../../core/TuskDrift\";\n\nexport interface IORedisInputValue {\n  command: string;\n  args: any[];\n  argsMetadata?: BufferMetadata[];\n  connectionInfo?: {\n    host?: string;\n    port?: number;\n  };\n  [key: string]: unknown;\n}\n\nexport interface IORedisConnectInputValue {\n  host?: string;\n  port?: number;\n  [key: string]: unknown;\n}\n\nexport interface IORedisModuleExports {\n  prototype?: any;\n  default?: any;\n  [key: string]: any;\n}\n\nexport interface IORedisInstrumentationConfig extends TdInstrumentationConfig {\n  requestHook?: (command: any) => void;\n  responseHook?: (result: any) => void;\n  mode?: TuskDriftMode;\n}\n\nexport interface IORedisCommand {\n  name: string;\n  args: any[];\n  resolve?: (result: any) => void;\n  reject?: (err: Error) => void;\n  callback?: Function;\n}\n\nexport interface IORedisInterface {\n  options: {\n    host?: string;\n    port?: number;\n    [key: string]: any;\n  };\n  sendCommand(command: IORedisCommand): Promise<any>;\n  connect(): Promise<void>;\n}\n\nexport enum BufferEncoding {\n  UTF8 = \"UTF8\",\n  BASE64 = \"BASE64\",\n  NONE = \"NONE\",\n}\n\nexport interface BufferMetadata {\n  bufferMeta?: string;\n  encoding?: BufferEncoding;\n}\n\nexport interface IORedisOutputValue extends Record<string, unknown> {\n  value: any;\n  metadata?: BufferMetadata;\n}\n","import { BufferEncoding } from \"./types\";\n\ninterface ConvertedValue {\n  value: any;\n  bufferMeta?: string;\n  encoding?: BufferEncoding;\n}\n\n/**\n * Check if a Buffer contains valid UTF-8 data\n */\nfunction isUtf8(buffer: Buffer): boolean {\n  try {\n    const str = buffer.toString(\"utf8\");\n    // Check if the string can be converted back to the same buffer\n    return Buffer.from(str, \"utf8\").equals(buffer);\n  } catch {\n    return false;\n  }\n}\n\n/**\n * Convert a value (potentially a Buffer) to a JSON-able format with metadata\n */\nexport function convertValueToJsonable(value: any): ConvertedValue {\n  if (Buffer.isBuffer(value)) {\n    if (isUtf8(value)) {\n      try {\n        // Try to parse as JSON\n        return {\n          value: JSON.parse(value.toString()),\n          bufferMeta: undefined,\n          encoding: BufferEncoding.UTF8,\n        };\n      } catch {\n        // Not JSON, just UTF-8 string\n        return {\n          value: value.toString(\"utf8\"),\n          bufferMeta: undefined,\n          encoding: BufferEncoding.UTF8,\n        };\n      }\n    }\n    // Non-UTF-8 buffer - store as base64\n    return {\n      value: \"RAW_CONTENT\",\n      bufferMeta: value.toString(\"base64\"),\n      encoding: BufferEncoding.BASE64,\n    };\n  }\n\n  if (typeof value === \"string\") {\n    try {\n      // Try to parse as JSON\n      return {\n        value: JSON.parse(value),\n        bufferMeta: undefined,\n        encoding: BufferEncoding.NONE,\n      };\n    } catch {\n      // Not JSON, just a string\n    }\n  }\n\n  // For any other type (number, object, array, etc.)\n  return {\n    value,\n    bufferMeta: undefined,\n    encoding: BufferEncoding.NONE,\n  };\n}\n","import { TdInstrumentationBase } from \"../../core/baseClasses/TdInstrumentationBase\";\nimport { TdInstrumentationNodeModule } from \"../../core/baseClasses/TdInstrumentationNodeModule\";\nimport { TdInstrumentationNodeModuleFile } from \"../../core/baseClasses/TdInstrumentationNodeModuleFile\";\nimport { SpanUtils, SpanInfo } from \"../../../core/tracing/SpanUtils\";\nimport { SpanKind, SpanStatusCode } from \"@opentelemetry/api\";\nimport { TuskDriftCore, TuskDriftMode } from \"../../../core/TuskDrift\";\nimport { wrap, isWrapped } from \"../../core/utils/shimmerUtils\";\nimport { findMockResponseAsync } from \"../../core/utils/mockResponseUtils\";\nimport { handleRecordMode, handleReplayMode } from \"../../core/utils/modeUtils\";\nimport {\n  IORedisModuleExports,\n  IORedisInputValue,\n  IORedisConnectInputValue,\n  IORedisInstrumentationConfig,\n  IORedisCommand,\n  IORedisInterface,\n  IORedisOutputValue,\n  BufferMetadata,\n} from \"./types\";\nimport { convertValueToJsonable } from \"./utils\";\nimport { PackageType } from \"@use-tusk/drift-schemas/core/span\";\nimport { logger, isEsm } from \"../../../core/utils\";\nimport { captureStackTrace } from \"src/instrumentation/core/utils\";\n\nconst SUPPORTED_VERSIONS = [\">=4.11.0 <5\", \"5.*\"];\n\nexport class IORedisInstrumentation extends TdInstrumentationBase {\n  private readonly INSTRUMENTATION_NAME = \"IORedisInstrumentation\";\n  private mode: TuskDriftMode;\n  private tuskDrift: TuskDriftCore;\n\n  constructor(config: IORedisInstrumentationConfig = {}) {\n    super(\"ioredis\", config);\n    this.mode = config.mode || TuskDriftMode.DISABLED;\n    this.tuskDrift = TuskDriftCore.getInstance();\n  }\n\n  init(): TdInstrumentationNodeModule[] {\n    return [\n      new TdInstrumentationNodeModule({\n        name: \"ioredis\",\n        supportedVersions: SUPPORTED_VERSIONS,\n        patch: (moduleExports: IORedisModuleExports) => this._patchIORedisModule(moduleExports),\n        files: [\n          new TdInstrumentationNodeModuleFile({\n            name: \"ioredis/built/Pipeline.js\",\n            supportedVersions: [\"5.*\"],\n            patch: (moduleExports: any) => this._patchPipelineModule(moduleExports),\n          }),\n          new TdInstrumentationNodeModuleFile({\n            name: \"ioredis/built/pipeline.js\",\n            supportedVersions: [\">=4.11.0 <5\"],\n            patch: (moduleExports: any) => this._patchPipelineModule(moduleExports),\n          }),\n        ],\n      }),\n    ];\n  }\n\n  private _patchIORedisModule(moduleExports: IORedisModuleExports): IORedisModuleExports {\n    logger.debug(`[IORedisInstrumentation] Patching IORedis module in ${this.mode} mode`);\n\n    if (this.isModulePatched(moduleExports)) {\n      logger.debug(`[IORedisInstrumentation] IORedis module already patched, skipping`);\n      return moduleExports;\n    }\n\n    const actualExports = isEsm(moduleExports) ? moduleExports.default : moduleExports;\n\n    if (!actualExports || !actualExports.prototype) {\n      logger.error(`[IORedisInstrumentation] Invalid module exports, cannot patch`);\n      return moduleExports;\n    }\n\n    // Wrap sendCommand method\n    if (actualExports.prototype.sendCommand) {\n      if (!isWrapped(actualExports.prototype.sendCommand)) {\n        this._wrap(actualExports.prototype, \"sendCommand\", this._getSendCommandPatchFn());\n        logger.debug(`[IORedisInstrumentation] Wrapped sendCommand method`);\n      }\n    }\n\n    // Wrap connect method\n    if (actualExports.prototype.connect) {\n      if (!isWrapped(actualExports.prototype.connect)) {\n        this._wrap(actualExports.prototype, \"connect\", this._getConnectPatchFn());\n        logger.debug(`[IORedisInstrumentation] Wrapped connect method`);\n      }\n    }\n\n    // Wrap pipeline() and multi() methods to intercept pipeline/transaction creation\n    if (actualExports.prototype.pipeline) {\n      if (!isWrapped(actualExports.prototype.pipeline)) {\n        this._wrap(actualExports.prototype, \"pipeline\", this._getPipelineCreationPatchFn());\n        logger.debug(`[IORedisInstrumentation] Wrapped pipeline method`);\n      }\n    }\n\n    if (actualExports.prototype.multi) {\n      if (!isWrapped(actualExports.prototype.multi)) {\n        this._wrap(actualExports.prototype, \"multi\", this._getMultiCreationPatchFn());\n        logger.debug(`[IORedisInstrumentation] Wrapped multi method`);\n      }\n    }\n\n    this.markModuleAsPatched(moduleExports);\n    logger.debug(`[IORedisInstrumentation] IORedis module patching complete`);\n\n    return moduleExports;\n  }\n\n  private _patchPipelineModule(moduleExports: any): any {\n    logger.debug(`[IORedisInstrumentation] Patching Pipeline module in ${this.mode} mode`);\n\n    if (this.isModulePatched(moduleExports)) {\n      logger.debug(`[IORedisInstrumentation] Pipeline module already patched, skipping`);\n      return moduleExports;\n    }\n\n    const actualExports = isEsm(moduleExports) ? moduleExports.default : moduleExports;\n\n    if (!actualExports || !actualExports.prototype) {\n      logger.debug(`[IORedisInstrumentation] Invalid Pipeline module exports, cannot patch`);\n      return moduleExports;\n    }\n\n    // Wrap exec method for pipelines\n    if (actualExports.prototype.exec) {\n      if (!isWrapped(actualExports.prototype.exec)) {\n        this._wrap(actualExports.prototype, \"exec\", this._getPipelineExecPatchFn());\n        logger.debug(`[IORedisInstrumentation] Wrapped Pipeline.exec method`);\n      }\n    }\n\n    this.markModuleAsPatched(moduleExports);\n    logger.debug(`[IORedisInstrumentation] Pipeline module patching complete`);\n\n    return moduleExports;\n  }\n\n  private _getSendCommandPatchFn() {\n    const self = this;\n\n    return (originalSendCommand: Function) => {\n      return function sendCommand(this: IORedisInterface, cmd?: IORedisCommand) {\n        if (!cmd || typeof cmd !== \"object\" || !cmd.name) {\n          return originalSendCommand.apply(this, arguments);\n        }\n\n        const commandName = cmd.name;\n        const commandArgs = cmd.args || [];\n\n        let sanitizedArgs: any[] = [];\n        let argsMetadata: BufferMetadata[] = [];\n        try {\n          const sanitized = self._sanitizeArgs(commandArgs);\n          sanitizedArgs = sanitized.values;\n          argsMetadata = sanitized.metadata;\n        } catch (error) {\n          logger.error(`[IORedisInstrumentation] error sanitizing args:`, error);\n        }\n\n        const inputValue: IORedisInputValue = {\n          command: commandName,\n          args: sanitizedArgs,\n          argsMetadata,\n          connectionInfo: {\n            host: this.options?.host,\n            port: this.options?.port,\n          },\n        };\n\n        // Handle replay mode\n        if (self.mode === TuskDriftMode.REPLAY) {\n          const stackTrace = captureStackTrace([\"IORedisInstrumentation\"]);\n\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              return undefined;\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalSendCommand.apply(this, arguments),\n                {\n                  name: `ioredis.${commandName}`,\n                  kind: SpanKind.CLIENT,\n                  submodule: commandName,\n                  packageType: PackageType.REDIS,\n                  packageName: \"ioredis\",\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                },\n                (spanInfo) => {\n                  return self._handleReplaySendCommand(spanInfo, cmd, inputValue, stackTrace);\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => originalSendCommand.apply(this, arguments),\n            recordModeHandler: ({ isPreAppStart }) => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalSendCommand.apply(this, arguments),\n                {\n                  name: `ioredis.${commandName}`,\n                  kind: SpanKind.CLIENT,\n                  submodule: commandName,\n                  packageType: PackageType.REDIS,\n                  packageName: \"ioredis\",\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart,\n                },\n                (spanInfo) => {\n                  return self._handleRecordSendCommand(spanInfo, originalSendCommand, cmd, this);\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          return originalSendCommand.apply(this, arguments);\n        }\n      };\n    };\n  }\n\n  private _getConnectPatchFn() {\n    const self = this;\n    return (originalConnect: Function) => {\n      return function connect(this: IORedisInterface) {\n        const inputValue: IORedisConnectInputValue = {\n          host: this.options?.host,\n          port: this.options?.port,\n        };\n\n        // Handle replay mode\n        if (self.mode === TuskDriftMode.REPLAY) {\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              process.nextTick(() => {\n                (this as any).emit(\"ready\");\n              });\n\n              return Promise.resolve();\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalConnect.apply(this, arguments),\n                {\n                  name: \"ioredis.connect\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"connect\",\n                  packageType: PackageType.REDIS,\n                  packageName: \"ioredis\",\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                },\n                (spanInfo) => {\n                  return self._handleReplayConnect(this);\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => originalConnect.apply(this, arguments),\n            recordModeHandler: ({ isPreAppStart }) => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalConnect.apply(this, arguments),\n                {\n                  name: \"ioredis.connect\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"connect\",\n                  packageType: PackageType.REDIS,\n                  packageName: \"ioredis\",\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart,\n                },\n                (spanInfo) => {\n                  return self._handleRecordConnect(spanInfo, originalConnect, this);\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          return originalConnect.apply(this, arguments);\n        }\n      };\n    };\n  }\n\n  private _getPipelineCreationPatchFn() {\n    const self = this;\n\n    return (originalPipeline: Function) => {\n      return function pipeline(this: any, ...args: any[]) {\n        const pipelineInstance = originalPipeline.apply(this, args);\n\n        // Dynamically wrap the exec method on this pipeline instance\n        if (pipelineInstance && pipelineInstance.exec && !isWrapped(pipelineInstance.exec)) {\n          self._wrap(pipelineInstance, \"exec\", self._getPipelineExecPatchFn());\n          logger.debug(`[IORedisInstrumentation] Wrapped exec on pipeline instance`);\n        }\n\n        return pipelineInstance;\n      };\n    };\n  }\n\n  private _getMultiCreationPatchFn() {\n    const self = this;\n\n    return (originalMulti: Function) => {\n      return function multi(this: any, ...args: any[]) {\n        const multiInstance = originalMulti.apply(this, args);\n\n        // Dynamically wrap the exec method on this multi instance\n        if (multiInstance && multiInstance.exec && !isWrapped(multiInstance.exec)) {\n          self._wrap(multiInstance, \"exec\", self._getPipelineExecPatchFn());\n          logger.debug(`[IORedisInstrumentation] Wrapped exec on multi instance`);\n        }\n\n        return multiInstance;\n      };\n    };\n  }\n\n  private _getPipelineExecPatchFn() {\n    const self = this;\n\n    return (originalExec: Function) => {\n      return function exec(this: any, ...args: any[]) {\n        // Extract queued commands from pipeline\n        const queue = (this as any)._queue || [];\n        const commands = queue\n          .filter((q: any) => q.name !== \"exec\")\n          .map((q: any) => ({\n            command: q.name,\n            args: q.args || [],\n          }));\n\n        const inputValue = {\n          commands,\n        };\n\n        // Handle replay mode\n        if (self.mode === TuskDriftMode.REPLAY) {\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              return [];\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalExec.apply(this, args),\n                {\n                  name: \"ioredis.pipeline.exec\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"pipeline-exec\",\n                  packageType: PackageType.REDIS,\n                  packageName: \"ioredis\",\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                },\n                (spanInfo) => {\n                  return self._handleReplayPipelineExec(spanInfo, inputValue, args);\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => originalExec.apply(this, args),\n            recordModeHandler: ({ isPreAppStart }) => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalExec.apply(this, args),\n                {\n                  name: \"ioredis.pipeline.exec\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"pipeline-exec\",\n                  packageType: PackageType.REDIS,\n                  packageName: \"ioredis\",\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart,\n                },\n                (spanInfo) => {\n                  return self._handleRecordPipelineExec(spanInfo, originalExec, this, args);\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          return originalExec.apply(this, args);\n        }\n      };\n    };\n  }\n\n  private _handleRecordSendCommand(\n    spanInfo: SpanInfo,\n    originalSendCommand: Function,\n    cmd: IORedisCommand,\n    thisContext: IORedisInterface,\n  ): Promise<any> {\n    // Execute the command and capture the final resolved value\n    // (after ioredis transformations)\n    const promise = originalSendCommand.apply(thisContext, [cmd]);\n\n    if (promise && typeof promise.then === \"function\") {\n      return promise\n        .then((result: any) => {\n          try {\n            logger.debug(\n              `[IORedisInstrumentation] IORedis command ${cmd.name} completed successfully (${SpanUtils.getTraceInfo()})`,\n            );\n\n            // Serialize the FINAL transformed result (what the application receives)\n            const outputValue = this._serializeOutput(result);\n            SpanUtils.addSpanAttributes(spanInfo.span, { outputValue });\n            SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n          } catch (error) {\n            logger.error(`[IORedisInstrumentation] error processing command response:`, error);\n          }\n          return result;\n        })\n        .catch((error: any) => {\n          try {\n            logger.debug(\n              `[IORedisInstrumentation] IORedis command ${cmd.name} error: ${error.message} (${SpanUtils.getTraceInfo()})`,\n            );\n            SpanUtils.endSpan(spanInfo.span, {\n              code: SpanStatusCode.ERROR,\n              message: error.message,\n            });\n          } catch (spanError) {\n            logger.error(`[IORedisInstrumentation] error ending span:`, spanError);\n          }\n          throw error;\n        });\n    }\n\n    return promise;\n  }\n\n  private async _handleReplaySendCommand(\n    spanInfo: SpanInfo,\n    cmd: IORedisCommand,\n    inputValue: IORedisInputValue,\n    stackTrace?: string,\n  ): Promise<any> {\n    logger.debug(`[IORedisInstrumentation] Replaying IORedis command ${cmd.name}`);\n\n    const mockData = await findMockResponseAsync({\n      mockRequestData: {\n        traceId: spanInfo.traceId,\n        spanId: spanInfo.spanId,\n        name: `ioredis.${cmd.name}`,\n        inputValue: inputValue,\n        packageName: \"ioredis\",\n        instrumentationName: this.INSTRUMENTATION_NAME,\n        submoduleName: cmd.name,\n        kind: SpanKind.CLIENT,\n        stackTrace,\n      },\n      tuskDrift: this.tuskDrift,\n    });\n\n    if (!mockData) {\n      logger.warn(`[IORedisInstrumentation] No mock data found for command: ${cmd.name}`);\n      throw new Error(`[IORedisInstrumentation] No matching mock found for command: ${cmd.name}`);\n    }\n\n    logger.debug(\n      `[IORedisInstrumentation] Found mock data for command ${cmd.name}: ${JSON.stringify(mockData)}`,\n    );\n\n    const result = this._deserializeOutput(mockData.result);\n\n    // Handle callback if present\n    if (cmd.callback && typeof cmd.callback === \"function\") {\n      process.nextTick(() => {\n        cmd.callback!(null, result);\n      });\n    }\n\n    // Return the already-transformed result directly\n    // We recorded the final transformed value, so no additional transformation needed\n    return Promise.resolve(result);\n  }\n\n  private _handleRecordConnect(\n    spanInfo: SpanInfo,\n    originalConnect: Function,\n    thisContext: IORedisInterface,\n  ): Promise<any> {\n    const promise = originalConnect.apply(thisContext, []);\n\n    if (promise && typeof promise.then === \"function\") {\n      return promise\n        .then((result: any) => {\n          try {\n            logger.debug(\n              `[IORedisInstrumentation] IORedis connect completed successfully (${SpanUtils.getTraceInfo()})`,\n            );\n            SpanUtils.addSpanAttributes(spanInfo.span, {\n              outputValue: { connected: true },\n            });\n            SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n          } catch {\n            logger.error(`[IORedisInstrumentation] error adding span attributes`);\n          }\n          return result;\n        })\n        .catch((error: any) => {\n          try {\n            logger.debug(\n              `[IORedisInstrumentation] IORedis connect error: ${error.message} (${SpanUtils.getTraceInfo()})`,\n            );\n            SpanUtils.endSpan(spanInfo.span, {\n              code: SpanStatusCode.ERROR,\n              message: error.message,\n            });\n          } catch {\n            logger.error(`[IORedisInstrumentation] error adding span attributes`);\n          }\n          throw error;\n        });\n    }\n\n    try {\n      // Non-promise result\n      logger.debug(\n        `[IORedisInstrumentation] IORedis connect completed (synchronous) (${SpanUtils.getTraceInfo()})`,\n      );\n      SpanUtils.addSpanAttributes(spanInfo.span, {\n        outputValue: { connected: true },\n      });\n      SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n    } catch {\n      logger.error(`[IORedisInstrumentation] error adding span attributes`);\n    }\n    return promise;\n  }\n\n  private async _handleReplayConnect(thisContext: IORedisInterface): Promise<any> {\n    logger.debug(`[IORedisInstrumentation] Replaying IORedis connect`);\n\n    process.nextTick(() => {\n      (thisContext as any).emit(\"ready\");\n    });\n\n    return Promise.resolve();\n  }\n\n  private _handleRecordPipelineExec(\n    spanInfo: SpanInfo,\n    originalExec: Function,\n    thisContext: any,\n    args: any[],\n  ): Promise<any> {\n    const promise = originalExec.apply(thisContext, args);\n\n    if (promise && typeof promise.then === \"function\") {\n      return promise\n        .then((results: any) => {\n          try {\n            logger.debug(\n              `[IORedisInstrumentation] Pipeline exec completed successfully (${SpanUtils.getTraceInfo()})`,\n            );\n\n            // Serialize the results with metadata\n            const outputValue = this._serializePipelineOutput(results);\n            SpanUtils.addSpanAttributes(spanInfo.span, { outputValue });\n            SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n          } catch {\n            logger.error(`[IORedisInstrumentation] error adding span attributes`);\n          }\n          return results;\n        })\n        .catch((error: any) => {\n          try {\n            logger.debug(\n              `[IORedisInstrumentation] Pipeline exec error: ${error.message} (${SpanUtils.getTraceInfo()})`,\n            );\n            SpanUtils.endSpan(spanInfo.span, {\n              code: SpanStatusCode.ERROR,\n              message: error.message,\n            });\n          } catch {\n            logger.error(`[IORedisInstrumentation] error adding span attributes`);\n          }\n          throw error;\n        });\n    }\n\n    return promise;\n  }\n\n  private async _handleReplayPipelineExec(\n    spanInfo: SpanInfo,\n    inputValue: any,\n    args: any[],\n  ): Promise<any> {\n    logger.debug(`[IORedisInstrumentation] Replaying Pipeline exec`);\n\n    const mockData = await findMockResponseAsync({\n      mockRequestData: {\n        traceId: spanInfo.traceId,\n        spanId: spanInfo.spanId,\n        name: \"ioredis.pipeline.exec\",\n        inputValue: inputValue,\n        packageName: \"ioredis\",\n        instrumentationName: this.INSTRUMENTATION_NAME,\n        submoduleName: \"pipeline-exec\",\n        kind: SpanKind.CLIENT,\n      },\n      tuskDrift: this.tuskDrift,\n    });\n\n    if (!mockData) {\n      logger.warn(`[IORedisInstrumentation] No mock data found for pipeline exec`);\n      throw new Error(`[IORedisInstrumentation] No matching mock found for pipeline exec`);\n    }\n\n    logger.debug(\n      `[IORedisInstrumentation] Found mock data for pipeline exec: ${JSON.stringify(mockData)}`,\n    );\n\n    // Deserialize the pipeline results with metadata\n    const result = this._deserializePipelineOutput(mockData.result);\n\n    // Handle callback if present\n    const callback = args[args.length - 1];\n    if (typeof callback === \"function\") {\n      process.nextTick(() => {\n        callback(null, result);\n      });\n    }\n\n    return Promise.resolve(result);\n  }\n\n  private _sanitizeArgs(args: any[]): { values: any[]; metadata: BufferMetadata[] } {\n    const values: any[] = [];\n    const metadata: BufferMetadata[] = [];\n\n    args.forEach((arg) => {\n      const converted = convertValueToJsonable(arg);\n      values.push(converted.value);\n      metadata.push({\n        bufferMeta: converted.bufferMeta,\n        encoding: converted.encoding,\n      });\n    });\n\n    return { values, metadata };\n  }\n\n  private _serializeOutput(value: any): IORedisOutputValue {\n    // We record the FINAL transformed value from ioredis (after Promise resolution)\n    // This value is already in its final form (strings, numbers, objects, arrays, etc.)\n    // No need for Buffer metadata since ioredis has already transformed Buffers to their final types\n    return { value };\n  }\n\n  private _serializePipelineOutput(results: any): any {\n    // Store the final transformed pipeline results as-is\n    return { value: results };\n  }\n\n  private _deserializePipelineOutput(outputValue: any): any {\n    if (!outputValue) {\n      return [];\n    }\n\n    // Return the stored value as-is (already in final form)\n    return outputValue.value || outputValue;\n  }\n\n  private _deserializeOutput(outputValue: any): any {\n    if (!outputValue) {\n      return undefined;\n    }\n\n    // If outputValue is not an IORedisOutputValue object (doesn't have 'value' property),\n    // it might be the raw value itself\n    if (typeof outputValue !== \"object\" || !(\"value\" in outputValue)) {\n      return outputValue;\n    }\n\n    // Return the stored value as-is (it's already in final form from ioredis transformations)\n    return outputValue.value;\n  }\n\n  private _wrap(target: any, propertyName: string, wrapper: (original: any) => any): void {\n    wrap(target, propertyName, wrapper);\n  }\n}\n","import { TdInstrumentationBase } from \"../../core/baseClasses/TdInstrumentationBase\";\nimport { TdInstrumentationNodeModule } from \"../../core/baseClasses/TdInstrumentationNodeModule\";\nimport { SpanUtils, SpanInfo } from \"../../../core/tracing/SpanUtils\";\nimport { SpanKind, SpanStatusCode } from \"@opentelemetry/api\";\nimport { TuskDriftCore, TuskDriftMode } from \"../../../core/TuskDrift\";\nimport { captureStackTrace, wrap } from \"../../core/utils\";\nimport { findMockResponseAsync } from \"../../core/utils/mockResponseUtils\";\nimport { handleRecordMode, handleReplayMode } from \"../../core/utils/modeUtils\";\nimport {\n  UpstashRedisModuleExports,\n  UpstashRedisInputValue,\n  UpstashRedisInstrumentationConfig,\n  UpstashRedisOutputValue,\n} from \"./types\";\nimport { PackageType } from \"@use-tusk/drift-schemas/core/span\";\nimport { logger } from \"../../../core/utils\";\nimport { isEsm } from \"../../../core/utils/runtimeDetectionUtils\";\n\nconst SUPPORTED_VERSIONS = [\">=1.0.0\"];\n\n// List of Redis commands to instrument at the method level\nconst REDIS_COMMANDS = [\n  // String operations\n  \"get\",\n  \"set\",\n  \"getdel\",\n  \"getset\",\n  \"setex\",\n  \"setnx\",\n  \"mget\",\n  \"mset\",\n  \"msetnx\",\n  \"append\",\n  \"getrange\",\n  \"setrange\",\n  \"strlen\",\n  \"incr\",\n  \"incrby\",\n  \"incrbyfloat\",\n  \"decr\",\n  \"decrby\",\n\n  // Hash operations\n  \"hget\",\n  \"hset\",\n  \"hsetnx\",\n  \"hmget\",\n  \"hmset\",\n  \"hgetall\",\n  \"hdel\",\n  \"hexists\",\n  \"hincrby\",\n  \"hincrbyfloat\",\n  \"hkeys\",\n  \"hlen\",\n  \"hvals\",\n  \"hscan\",\n\n  // List operations\n  \"lpush\",\n  \"rpush\",\n  \"lpop\",\n  \"rpop\",\n  \"llen\",\n  \"lrange\",\n  \"lindex\",\n  \"lset\",\n  \"linsert\",\n  \"lrem\",\n  \"ltrim\",\n  \"blpop\",\n  \"brpop\",\n  \"brpoplpush\",\n  \"rpoplpush\",\n  \"lpos\",\n  \"lmove\",\n  \"blmove\",\n\n  // Set operations\n  \"sadd\",\n  \"srem\",\n  \"smembers\",\n  \"sismember\",\n  \"scard\",\n  \"sdiff\",\n  \"sdiffstore\",\n  \"sinter\",\n  \"sinterstore\",\n  \"sunion\",\n  \"sunionstore\",\n  \"spop\",\n  \"srandmember\",\n  \"smove\",\n  \"sscan\",\n\n  // Sorted set operations\n  \"zadd\",\n  \"zrem\",\n  \"zscore\",\n  \"zincrby\",\n  \"zcard\",\n  \"zcount\",\n  \"zrange\",\n  \"zrevrange\",\n  \"zrangebyscore\",\n  \"zrevrangebyscore\",\n  \"zrank\",\n  \"zrevrank\",\n  \"zremrangebyrank\",\n  \"zremrangebyscore\",\n  \"zpopmin\",\n  \"zpopmax\",\n  \"bzpopmin\",\n  \"bzpopmax\",\n  \"zdiff\",\n  \"zdiffstore\",\n  \"zinter\",\n  \"zinterstore\",\n  \"zunion\",\n  \"zunionstore\",\n  \"zscan\",\n  \"zrangebylex\",\n  \"zrevrangebylex\",\n  \"zremrangebylex\",\n\n  // Key operations\n  \"del\",\n  \"exists\",\n  \"expire\",\n  \"expireat\",\n  \"ttl\",\n  \"pttl\",\n  \"persist\",\n  \"keys\",\n  \"scan\",\n  \"randomkey\",\n  \"rename\",\n  \"renamenx\",\n  \"type\",\n  \"dump\",\n  \"restore\",\n  \"touch\",\n  \"unlink\",\n\n  // Pub/Sub operations\n  \"publish\",\n  \"subscribe\",\n  \"unsubscribe\",\n  \"psubscribe\",\n  \"punsubscribe\",\n\n  // Geo operations\n  \"geoadd\",\n  \"geodist\",\n  \"geohash\",\n  \"geopos\",\n  \"georadius\",\n  \"georadiusbymember\",\n  \"geosearch\",\n  \"geosearchstore\",\n\n  // HyperLogLog operations\n  \"pfadd\",\n  \"pfcount\",\n  \"pfmerge\",\n\n  // Bitmap operations\n  \"getbit\",\n  \"setbit\",\n  \"bitcount\",\n  \"bitpos\",\n  \"bitop\",\n  \"bitfield\",\n\n  // Script operations\n  \"eval\",\n  \"evalsha\",\n  \"script\",\n\n  // Transaction operations\n  \"multi\",\n  \"exec\",\n  \"discard\",\n  \"watch\",\n  \"unwatch\",\n\n  // Server operations\n  \"flushdb\",\n  \"flushall\",\n  \"dbsize\",\n  \"ping\",\n  \"echo\",\n  \"select\",\n  \"quit\",\n  \"info\",\n  \"config\",\n  \"time\",\n\n  // Stream operations\n  \"xadd\",\n  \"xlen\",\n  \"xrange\",\n  \"xrevrange\",\n  \"xread\",\n  \"xreadgroup\",\n  \"xack\",\n  \"xpending\",\n  \"xclaim\",\n  \"xautoclaim\",\n  \"xdel\",\n  \"xtrim\",\n  \"xgroup\",\n  \"xinfo\",\n];\n\nexport class UpstashRedisInstrumentation extends TdInstrumentationBase {\n  private readonly INSTRUMENTATION_NAME = \"UpstashRedisInstrumentation\";\n  private mode: TuskDriftMode;\n  private tuskDrift: TuskDriftCore;\n\n  constructor(config: UpstashRedisInstrumentationConfig = {}) {\n    super(\"@upstash/redis\", config);\n    this.mode = config.mode || TuskDriftMode.DISABLED;\n    this.tuskDrift = TuskDriftCore.getInstance();\n  }\n\n  init(): TdInstrumentationNodeModule[] {\n    return [\n      new TdInstrumentationNodeModule({\n        name: \"@upstash/redis\",\n        supportedVersions: SUPPORTED_VERSIONS,\n        patch: (moduleExports: UpstashRedisModuleExports) => {\n          return this._patchUpstashRedisModule(moduleExports);\n        },\n      }),\n    ];\n  }\n\n  private _patchUpstashRedisModule(\n    moduleExports: UpstashRedisModuleExports,\n  ): UpstashRedisModuleExports {\n    logger.debug(\n      `[UpstashRedisInstrumentation] Patching @upstash/redis module in ${this.mode} mode`,\n    );\n\n    if (this.mode === TuskDriftMode.DISABLED) {\n      logger.debug(`[UpstashRedisInstrumentation] Skipping patching in ${this.mode} mode`);\n      return moduleExports;\n    }\n\n    if (this.isModulePatched(moduleExports)) {\n      logger.debug(`[UpstashRedisInstrumentation] Module already patched, skipping`);\n      return moduleExports;\n    }\n\n    // Detect module type\n    const isEsmModule = isEsm(moduleExports);\n    logger.debug(\n      `[UpstashRedisInstrumentation] Module type detected: ${isEsmModule ? \"ESM\" : \"CJS\"}`,\n    );\n\n    // Get the Redis class from module exports\n    const OriginalRedis = moduleExports.Redis;\n\n    if (!OriginalRedis || typeof OriginalRedis !== \"function\") {\n      logger.debug(\n        `[UpstashRedisInstrumentation] Redis class not found in module exports. Available keys: ${Object.keys(moduleExports).join(\", \")}`,\n      );\n      return moduleExports;\n    }\n\n    const self = this;\n\n    // Create wrapped Redis constructor\n    // Note: We cannot modify moduleExports.Redis directly because it's non-configurable\n    // Instead, we return a new moduleExports object with our wrapped Redis class\n    const WrappedRedis = function Redis(this: any, ...args: any[]) {\n      logger.debug(`[UpstashRedisInstrumentation] Redis constructor called`);\n\n      // Call original constructor with proper context\n      const instance = Reflect.construct(OriginalRedis, args, new.target || WrappedRedis);\n\n      // Since Upstash Redis uses dynamic property access for commands (not prototype methods),\n      // we need to wrap the instance with a Proxy to intercept command calls\n      return self._wrapInstanceWithProxy(instance);\n    } as any;\n\n    // Copy static properties and prototype from original Redis class\n    Object.setPrototypeOf(WrappedRedis, OriginalRedis);\n    WrappedRedis.prototype = OriginalRedis.prototype;\n\n    // IMPORTANT: Handle ESM vs CJS differently due to how module interception works\n    //\n    // ESM uses import-in-the-middle (IITM):\n    //   - IITM wraps module exports with getter/setter pairs for tracking imports\n    //   - The setters are configurable and writable, allowing direct assignment\n    //   - Direct assignment works: moduleExports.Redis = WrappedRedis\n    //   - Spread operator BREAKS it: {...moduleExports} copies values but loses IITM's setters\n    //   - Result: We MUST mutate the original object to preserve IITM's tracking\n    //\n    // CJS uses require-in-the-middle (RITM):\n    //   - RITM does NOT add setters like IITM does\n    //   - Module authors often use Object.defineProperty with configurable: false and only a getter\n    //   - This means: property has only a getter (no setter) and cannot be redefined\n    //   - Direct assignment fails: moduleExports.Redis = WrappedRedis (Cannot set property which has only a getter)\n    //   - Object.defineProperty fails: Cannot redefine non-configurable property\n    //   - Spread operator works: {...moduleExports} copies values into a new object\n    //   - Result: We MUST return a new object when properties are non-configurable\n    if (isEsmModule) {\n      // For ESM: Mutate the original moduleExports object to preserve IITM's setter tracking\n      try {\n        // Try to set Redis property directly (should work in most ESM cases)\n        (moduleExports as any).Redis = WrappedRedis;\n      } catch (error) {\n        // Fallback: If direct assignment somehow fails, try Object.defineProperty\n        // This is a safety net but should rarely be needed for ESM with IITM\n        Object.defineProperty(moduleExports, \"Redis\", {\n          value: WrappedRedis,\n          writable: true,\n          enumerable: true,\n          configurable: true,\n        });\n      }\n\n      this.markModuleAsPatched(moduleExports);\n      logger.debug(`[UpstashRedisInstrumentation] @upstash/redis module patching complete`);\n      return moduleExports;\n    } else {\n      // For CJS: Return a new object because the original has non-configurable properties\n      // The spread operator copies all property values (invoking getters) into a new plain object,\n      // then we override the Redis property with our wrapped version\n      const newModuleExports: UpstashRedisModuleExports = {\n        ...moduleExports,\n        Redis: WrappedRedis,\n      };\n\n      this.markModuleAsPatched(newModuleExports);\n      logger.debug(`[UpstashRedisInstrumentation] @upstash/redis module patching complete`);\n      return newModuleExports;\n    }\n  }\n\n  private _wrapInstanceWithProxy(instance: any): any {\n    const self = this;\n    const redisCommandsSet = new Set(REDIS_COMMANDS);\n\n    logger.debug(`[UpstashRedisInstrumentation] Creating Proxy wrapper for Redis instance`);\n\n    return new Proxy(instance, {\n      get(target: any, prop: string | symbol, receiver: any) {\n        const originalValue = Reflect.get(target, prop, receiver);\n\n        // Only intercept if:\n        // 1. It's a string property (not a symbol)\n        // 2. It's a known Redis command\n        // 3. The original value is a function\n        if (\n          typeof prop === \"string\" &&\n          redisCommandsSet.has(prop.toLowerCase()) &&\n          typeof originalValue === \"function\"\n        ) {\n          logger.debug(`[UpstashRedisInstrumentation] Proxy intercepted command: ${prop}`);\n\n          // Return a wrapped version of the function\n          return function (this: any, ...args: any[]) {\n            const commandName = prop;\n            const operationName = `upstash-redis.${commandName.toLowerCase()}`;\n            const submoduleName = \"command\";\n\n            // Create input value with command arguments\n            const inputValue: UpstashRedisInputValue = {\n              command: [\n                commandName.toUpperCase(),\n                ...args.filter((arg) => typeof arg !== \"function\"),\n              ],\n              connectionInfo: {\n                baseUrl: target.client?.baseUrl,\n              },\n            };\n\n            // Handle replay mode\n            if (self.mode === TuskDriftMode.REPLAY) {\n              const stackTrace = captureStackTrace([\"UpstashRedisInstrumentation\"]);\n\n              return handleReplayMode({\n                noOpRequestHandler: () => {\n                  return undefined;\n                },\n                isServerRequest: false,\n                replayModeHandler: () => {\n                  return SpanUtils.createAndExecuteSpan(\n                    self.mode,\n                    () => originalValue.apply(this === receiver ? target : this, args),\n                    {\n                      name: operationName,\n                      kind: SpanKind.CLIENT,\n                      submodule: submoduleName,\n                      packageType: PackageType.REDIS,\n                      packageName: \"@upstash/redis\",\n                      instrumentationName: self.INSTRUMENTATION_NAME,\n                      inputValue: inputValue,\n                      isPreAppStart: false,\n                    },\n                    (spanInfo) => {\n                      return self._handleReplayCommand(\n                        spanInfo,\n                        inputValue,\n                        operationName,\n                        submoduleName,\n                        stackTrace,\n                      );\n                    },\n                  );\n                },\n              });\n            } else if (self.mode === TuskDriftMode.RECORD) {\n              return handleRecordMode({\n                originalFunctionCall: () =>\n                  originalValue.apply(this === receiver ? target : this, args),\n                recordModeHandler: ({ isPreAppStart }) => {\n                  return SpanUtils.createAndExecuteSpan(\n                    self.mode,\n                    () => originalValue.apply(this === receiver ? target : this, args),\n                    {\n                      name: operationName,\n                      kind: SpanKind.CLIENT,\n                      submodule: submoduleName,\n                      packageType: PackageType.REDIS,\n                      packageName: \"@upstash/redis\",\n                      instrumentationName: self.INSTRUMENTATION_NAME,\n                      inputValue: inputValue,\n                      isPreAppStart,\n                      stopRecordingChildSpans: true,\n                    },\n                    (spanInfo) => {\n                      return self._handleRecordCommand(\n                        spanInfo,\n                        originalValue,\n                        this === receiver ? target : this,\n                        args,\n                      );\n                    },\n                  );\n                },\n                spanKind: SpanKind.CLIENT,\n              });\n            } else {\n              return originalValue.apply(this === receiver ? target : this, args);\n            }\n          };\n        }\n\n        // For all other properties, return as-is\n        return originalValue;\n      },\n    });\n  }\n\n  private async _handleRecordCommand(\n    spanInfo: SpanInfo,\n    originalMethod: Function,\n    thisContext: any,\n    args: any[],\n  ): Promise<any> {\n    try {\n      const result = await originalMethod.apply(thisContext, args);\n\n      logger.debug(`[UpstashRedisInstrumentation] Command completed successfully`);\n\n      const outputValue: UpstashRedisOutputValue = {\n        result: result,\n      };\n\n      try {\n        SpanUtils.addSpanAttributes(spanInfo.span, { outputValue });\n        SpanUtils.endSpan(spanInfo.span, {\n          code: SpanStatusCode.OK,\n        });\n      } catch (error) {\n        logger.error(`[UpstashRedisInstrumentation] Error adding span attributes: ${error}`);\n      }\n\n      return result;\n    } catch (error) {\n      logger.debug(`[UpstashRedisInstrumentation] Command error: ${error}`);\n      try {\n        SpanUtils.endSpan(spanInfo.span, {\n          code: SpanStatusCode.ERROR,\n        });\n      } catch (error) {\n        logger.error(`[UpstashRedisInstrumentation] Error ending span: ${error}`);\n      }\n      throw error;\n    }\n  }\n\n  private async _handleReplayCommand(\n    spanInfo: SpanInfo,\n    inputValue: UpstashRedisInputValue,\n    operationName: string,\n    submoduleName: string,\n    stackTrace?: string,\n  ): Promise<any> {\n    logger.debug(`[UpstashRedisInstrumentation] Replaying command: ${operationName}`);\n\n    const mockData = await findMockResponseAsync({\n      mockRequestData: {\n        traceId: spanInfo.traceId,\n        spanId: spanInfo.spanId,\n        name: operationName,\n        inputValue: inputValue,\n        packageName: \"@upstash/redis\",\n        instrumentationName: this.INSTRUMENTATION_NAME,\n        submoduleName: submoduleName,\n        kind: SpanKind.CLIENT,\n        stackTrace,\n      },\n      tuskDrift: this.tuskDrift,\n    });\n\n    if (!mockData) {\n      logger.warn(`[UpstashRedisInstrumentation] No mock data found for command: ${operationName}`);\n      throw new Error(\n        `[UpstashRedisInstrumentation] No matching mock found for command: ${operationName}`,\n      );\n    }\n\n    logger.debug(\n      `[UpstashRedisInstrumentation] Found mock data for command ${operationName}: ${JSON.stringify(mockData)}`,\n    );\n\n    // Return the mocked result directly (not wrapped in UpstashResponse)\n    return mockData.result?.result;\n  }\n}\n","import { ReadableMetadata, ReadableMetadataValue } from \"./types\";\n\n/**\n * Check if a buffer contains valid UTF-8 text\n */\nfunction isUtf8(buffer: Buffer): boolean {\n  try {\n    const str = buffer.toString(\"utf8\");\n    return Buffer.from(str, \"utf8\").equals(buffer);\n  } catch {\n    return false;\n  }\n}\n\n/**\n * Convert gRPC Metadata object to a plain JavaScript object\n */\nexport function serializeGrpcMetadata(metadata: any): ReadableMetadata {\n  if (!metadata) {\n    return {};\n  }\n\n  const readableMetadata: ReadableMetadata = {};\n\n  // Get all metadata keys\n  const metadataMap = metadata.getMap ? metadata.getMap() : {};\n  const keys = Object.keys(metadataMap);\n\n  for (const key of keys) {\n    const valueArr = metadata.get(key);\n    readableMetadata[key] = [];\n\n    for (const value of valueArr) {\n      if (typeof value === \"string\") {\n        readableMetadata[key].push(value);\n        continue;\n      }\n\n      // Handle binary values (Buffers)\n      if (Buffer.isBuffer(value)) {\n        let readableBuffer: ReadableMetadataValue;\n        if (isUtf8(value)) {\n          readableBuffer = {\n            value: value.toString(\"utf8\"),\n            encoding: \"utf8\",\n          };\n        } else {\n          readableBuffer = {\n            value: value.toString(\"base64\"),\n            encoding: \"base64\",\n          };\n        }\n        readableMetadata[key].push(readableBuffer);\n      }\n    }\n  }\n\n  return readableMetadata;\n}\n\n/**\n * Convert a plain JavaScript object back to gRPC Metadata\n */\nexport function deserializeGrpcMetadata(\n  MetadataConstructor: any,\n  readableMetadata: ReadableMetadata,\n): any {\n  const metadata = new MetadataConstructor();\n\n  for (const [key, valueArr] of Object.entries(readableMetadata)) {\n    for (const value of valueArr) {\n      if (typeof value === \"string\") {\n        metadata.add(key, value);\n        continue;\n      }\n\n      // Handle binary values\n      if (typeof value === \"object\" && \"value\" in value && \"encoding\" in value) {\n        const encodedValue = value as ReadableMetadataValue;\n        if (encodedValue.encoding === \"utf8\") {\n          metadata.add(key, Buffer.from(encodedValue.value, \"utf-8\"));\n        } else {\n          metadata.add(key, Buffer.from(encodedValue.value, \"base64\"));\n        }\n      }\n    }\n  }\n\n  return metadata;\n}\n\n/**\n * Extract service and method name from gRPC path\n * Path format: /package.ServiceName/MethodName\n */\nexport function parseGrpcPath(path: string): {\n  method: string;\n  service: string;\n} {\n  if (!path || path === null) {\n    return { method: \"\", service: \"\" };\n  }\n\n  const parts = path.replace(/^\\//, \"\").split(\"/\");\n  const service = parts[0] || \"\";\n  const method = parts[1] || \"\";\n\n  return { method, service };\n}\n\n/**\n * Convert request/response body to a serializable format, handling Buffers\n */\nexport function serializeGrpcPayload(realBody: any): {\n  readableBody: any;\n  bufferMap: Record<string, { value: string; encoding: string }>;\n  jsonableStringMap: Record<string, string>;\n} {\n  const bufferMap: Record<string, { value: string; encoding: string }> = {};\n  const jsonableStringMap: Record<string, string> = {};\n\n  // Clone the body to avoid mutating the original\n  const readableBody = deepClone(realBody);\n\n  // Process the body recursively\n  processPayloadForSerialization(readableBody, bufferMap, jsonableStringMap, []);\n\n  return { readableBody, bufferMap, jsonableStringMap };\n}\n\n/**\n * Recursively process a payload to convert Buffers to placeholders\n */\nfunction processPayloadForSerialization(\n  payload: any,\n  bufferMap: Record<string, { value: string; encoding: string }>,\n  jsonableStringMap: Record<string, string>,\n  path: string[],\n): void {\n  if (!payload || typeof payload !== \"object\") {\n    return;\n  }\n\n  for (const key of Object.keys(payload)) {\n    const currentPath = [...path, key];\n    const currentPathStr = currentPath.join(\".\");\n\n    // Handle Buffer objects\n    if (Buffer.isBuffer(payload[key])) {\n      if (isUtf8(payload[key])) {\n        const stringValue = payload[key].toString(\"utf-8\");\n        bufferMap[currentPathStr] = {\n          value: stringValue,\n          encoding: \"utf8\",\n        };\n        payload[key] = \"__tusk_drift_buffer_replaced__\";\n      } else {\n        bufferMap[currentPathStr] = {\n          value: payload[key].toString(\"base64\"),\n          encoding: \"base64\",\n        };\n        payload[key] = \"__tusk_drift_buffer_replaced__\";\n      }\n      continue;\n    }\n\n    // Handle nested objects\n    if (typeof payload[key] === \"object\" && payload[key] !== null) {\n      processPayloadForSerialization(payload[key], bufferMap, jsonableStringMap, currentPath);\n    }\n  }\n}\n\n/**\n * Convert a serialized payload back to its original format with Buffers restored\n */\nexport function deserializeGrpcPayload(\n  readablePayload: any,\n  bufferMap: Record<string, { value: string; encoding: string }>,\n  jsonableStringMap: Record<string, string>,\n): any {\n  const clonedPayload = deepClone(readablePayload);\n  restorePayloadFromSerialization(clonedPayload, bufferMap, jsonableStringMap, []);\n  return clonedPayload;\n}\n\n/**\n * Recursively restore Buffers in a payload\n */\nfunction restorePayloadFromSerialization(\n  payload: any,\n  bufferMap: Record<string, { value: string; encoding: string }>,\n  jsonableStringMap: Record<string, string>,\n  path: string[],\n): void {\n  if (!payload || typeof payload !== \"object\") {\n    return;\n  }\n\n  for (const key of Object.keys(payload)) {\n    const currentPath = [...path, key];\n    const currentPathStr = currentPath.join(\".\");\n\n    // Restore Buffer placeholders\n    if (payload[key] === \"__tusk_drift_buffer_replaced__\") {\n      const buffer = bufferMap[currentPathStr];\n      if (buffer) {\n        if (buffer.encoding === \"utf8\") {\n          payload[key] = Buffer.from(buffer.value, \"utf-8\");\n        } else {\n          payload[key] = Buffer.from(buffer.value, \"base64\");\n        }\n      }\n      continue;\n    }\n\n    // Handle nested objects\n    if (typeof payload[key] === \"object\" && payload[key] !== null) {\n      restorePayloadFromSerialization(payload[key], bufferMap, jsonableStringMap, currentPath);\n    }\n  }\n}\n\n/**\n * Deep clone an object\n */\nfunction deepClone(obj: any): any {\n  if (obj === null || typeof obj !== \"object\") {\n    return obj;\n  }\n\n  if (Buffer.isBuffer(obj)) {\n    return Buffer.from(obj);\n  }\n\n  if (Array.isArray(obj)) {\n    return obj.map((item) => deepClone(item));\n  }\n\n  const cloned: any = {};\n  for (const key in obj) {\n    if (obj.hasOwnProperty(key)) {\n      cloned[key] = deepClone(obj[key]);\n    }\n  }\n\n  return cloned;\n}\n","import { TdInstrumentationBase } from \"../../core/baseClasses/TdInstrumentationBase\";\nimport { TdInstrumentationNodeModule } from \"../../core/baseClasses/TdInstrumentationNodeModule\";\nimport { TdInstrumentationNodeModuleFile } from \"../../core/baseClasses/TdInstrumentationNodeModuleFile\";\nimport { SpanUtils, SpanInfo } from \"../../../core/tracing/SpanUtils\";\nimport { SpanKind, SpanStatusCode } from \"@opentelemetry/api\";\nimport { TuskDriftCore, TuskDriftMode } from \"../../../core/TuskDrift\";\nimport { captureStackTrace, wrap } from \"../../core/utils\";\nimport { findMockResponseAsync } from \"../../core/utils/mockResponseUtils\";\nimport { handleRecordMode, handleReplayMode } from \"../../core/utils/modeUtils\";\nimport { PackageType } from \"@use-tusk/drift-schemas/core/span\";\nimport { logger } from \"../../../core/utils/logger\";\nimport {\n  GrpcInstrumentationConfig,\n  GrpcModuleExports,\n  GrpcClientInputValue,\n  GrpcServerInputValue,\n  ReadableMetadata,\n  GrpcOutputValue,\n  BufferMetadata,\n  GrpcErrorOutput,\n} from \"./types\";\nimport {\n  serializeGrpcMetadata,\n  deserializeGrpcMetadata,\n  parseGrpcPath,\n  serializeGrpcPayload,\n  deserializeGrpcPayload,\n} from \"./utils\";\nimport { EventEmitter } from \"events\";\nimport { Readable } from \"stream\";\n\nconst GRPC_MODULE_NAME = \"@grpc/grpc-js\";\n\nexport class GrpcInstrumentation extends TdInstrumentationBase {\n  private readonly INSTRUMENTATION_NAME = \"GrpcInstrumentation\";\n  private mode: TuskDriftMode;\n  private tuskDrift: TuskDriftCore;\n  private Metadata: any;\n  // Store for version-specific Metadata constructors\n  private static metadataStore = new Map<string, any>();\n\n  constructor(config: GrpcInstrumentationConfig = {}) {\n    super(\"grpc\", config);\n    this.mode = config.mode || TuskDriftMode.DISABLED;\n    this.tuskDrift = TuskDriftCore.getInstance();\n    logger.debug(`[GrpcInstrumentation] Constructor called with mode: ${this.mode}`);\n  }\n\n  init(): TdInstrumentationNodeModule[] {\n    // Client file instrumentation - patch the internal client module\n    const grpcClientFileInstrumentation = new TdInstrumentationNodeModuleFile({\n      name: `${GRPC_MODULE_NAME}/build/src/client.js`,\n      supportedVersions: [\"1.*\"],\n      patch: (moduleExports: any, version?: string) => {\n        logger.debug(`[GrpcInstrumentation] Patching gRPC client file v${version}`);\n\n        if (moduleExports.Client && moduleExports.Client.prototype) {\n          this._patchGrpcClient(moduleExports.Client.prototype, version || \"\");\n          logger.debug(`[GrpcInstrumentation] Wrapped Client methods in client file`);\n        } else {\n          logger.warn(`[GrpcInstrumentation] Client class not found in client file exports`);\n        }\n\n        return moduleExports;\n      },\n    });\n\n    // NOTE: Not using this yet. This is somewhat working, haven't full tested it yet\n    // Adding this would require more changes to replay grpc server calls. Holding off until a customer asks for it\n    // const grpcServerFileInstrumentation = new TdInstrumentationNodeModuleFile({\n    //   name: `${GRPC_MODULE_NAME}/build/src/server.js`,\n    //   supportedVersions: [\"1.*\"],\n    //   patch: (moduleExports: any, version?: string) => {\n    //     logger.debug(`[GrpcInstrumentation] Patching gRPC server file v${version}`);\n\n    //     if (moduleExports.Server && moduleExports.Server.prototype) {\n    //       this._patchGrpcServer(moduleExports.Server.prototype, version || \"\");\n    //       logger.debug(`[GrpcInstrumentation] Wrapped Server methods in server file`);\n    //     } else {\n    //       logger.warn(`[GrpcInstrumentation] Server class not found in server file exports`);\n    //     }\n\n    //     return moduleExports;\n    //   },\n    // });\n\n    // Main module instrumentation - patch the main @grpc/grpc-js package\n    const grpcInstrumentation = new TdInstrumentationNodeModule({\n      name: GRPC_MODULE_NAME,\n      supportedVersions: [\"1.*\"],\n      patch: (moduleExports: GrpcModuleExports, version?: string) => {\n        logger.debug(`[GrpcInstrumentation] Patching main gRPC module v${version}`);\n        return this._patchGrpcModule(moduleExports, version || \"\");\n      },\n      files: [grpcClientFileInstrumentation],\n    });\n\n    return [grpcInstrumentation];\n  }\n\n  private _patchGrpcModule(moduleExports: GrpcModuleExports, version: string): GrpcModuleExports {\n    logger.debug(`[GrpcInstrumentation] Patching gRPC main module in ${this.mode} mode`);\n\n    if (this.isModulePatched(moduleExports)) {\n      logger.debug(`[GrpcInstrumentation] gRPC module already patched, skipping`);\n      return moduleExports;\n    }\n\n    // Store Metadata constructor for this version\n    if (moduleExports.Metadata) {\n      GrpcInstrumentation.metadataStore.set(version, moduleExports.Metadata);\n      this.Metadata = moduleExports.Metadata;\n      logger.debug(`[GrpcInstrumentation] Stored Metadata constructor for version ${version}`);\n    }\n\n    // Note: Client and Server are patched via TdInstrumentationNodeModuleFile for the internal modules\n    // This ensures the patches are applied before any service clients are created\n    // The Client.prototype.makeUnaryRequest patch will handle all unary gRPC calls\n\n    this.markModuleAsPatched(moduleExports);\n    logger.debug(`[GrpcInstrumentation] gRPC main module patching complete`);\n\n    return moduleExports;\n  }\n\n  private _patchGrpcClient(clientPrototype: any, version: string): void {\n    if (!clientPrototype) {\n      logger.warn(`[GrpcInstrumentation] Client prototype not found`);\n      return;\n    }\n\n    // Wrap makeUnaryRequest\n    this._wrap(clientPrototype, \"makeUnaryRequest\", this._getMakeUnaryRequestPatchFn(version));\n\n    // Wrap server streaming requests (used by Firestore queries)\n    this._wrap(\n      clientPrototype,\n      \"makeServerStreamRequest\",\n      this._getMakeServerStreamRequestPatchFn(version),\n    );\n\n    // Wrap waitForReady (for replay mode, we skip the actual wait)\n    this._wrap(clientPrototype, \"waitForReady\", this._getWaitForReadyPatchFn());\n\n    // Wrap close (for replay mode, we don't actually close)\n    this._wrap(clientPrototype, \"close\", this._getClosePatchFn());\n\n    // Wrap getChannel (for replay mode, we return a mock)\n    this._wrap(clientPrototype, \"getChannel\", this._getGetChannelPatchFn());\n\n    logger.debug(`[GrpcInstrumentation] Client methods patched successfully`);\n  }\n\n  // NOTE: Not using this yet. This is somewhat working, haven't full tested it yet\n  // Adding this would require more changes to replay grpc server calls. Holding off until a customer asks for it\n  // private _patchGrpcServer(serverPrototype: any, version: string): void {\n  //   if (!serverPrototype) {\n  //     logger.warn(`[GrpcInstrumentation] Server prototype not found`);\n  //     return;\n  //   }\n\n  //   // Wrap register method to intercept handler registration\n  //   this._wrap(serverPrototype, \"register\", this._getRegisterPatchFn(version));\n\n  //   logger.debug(`[GrpcInstrumentation] Server methods patched successfully`);\n  // }\n\n  /**\n   * Helper method to parse optional unary response arguments\n   *\n   * Handles the following cases:\n   * 1. (metadata: Metadata, callback: Function) - no options\n   * 2. (metadata: Metadata, options: Object, callback: Function) - with options\n   */\n  private parseUnaryCallArguments(\n    MetadataConstructor: any,\n    arg1: any,\n    arg2: any,\n    arg3: any,\n  ): { metadata: any; options: any; callback: Function } {\n    // Case 1: metadata + callback (no options)\n    if (arg1 instanceof MetadataConstructor && typeof arg2 === \"function\") {\n      return {\n        metadata: arg1,\n        options: {},\n        callback: arg2,\n      };\n    }\n\n    // Case 2: metadata + options + callback\n    if (\n      arg1 instanceof MetadataConstructor &&\n      arg2 instanceof Object &&\n      typeof arg3 === \"function\"\n    ) {\n      return {\n        metadata: arg1,\n        options: arg2,\n        callback: arg3,\n      };\n    }\n\n    // We try/catch this function so throwing an error is okay\n    throw new Error(\n      `[GrpcInstrumentation] Incorrect arguments passed to makeUnaryRequest. Expected (metadata, [options], callback) but got types: (${typeof arg1}, ${typeof arg2}, ${typeof arg3})`,\n    );\n  }\n\n  /**\n   * Helper method to extract and validate all input parameters for makeUnaryRequest\n   */\n  private extractRequestParameters(\n    args: any[],\n    MetadataConstructor: any,\n  ): {\n    method: string;\n    serialize: Function;\n    deserialize: Function;\n    argument: any;\n    metadata: any;\n    options: any;\n    callback: Function;\n  } {\n    const method = args[0];\n    const serialize = args[1];\n    const deserialize = args[2];\n    const argument = args[3];\n\n    const { metadata, options, callback } = this.parseUnaryCallArguments(\n      MetadataConstructor,\n      args[4],\n      args[5],\n      args[6],\n    );\n\n    return { method, serialize, deserialize, argument, metadata, options, callback };\n  }\n\n  private _getMakeUnaryRequestPatchFn(version: string) {\n    const self = this;\n    logger.debug(\n      `[GrpcInstrumentation] _getMakeUnaryRequestPatchFn called for version: ${version}`,\n    );\n    return (original: Function) => {\n      return function makeUnaryRequest(this: any, ...args: any[]) {\n        logger.debug(`[GrpcInstrumentation] makeUnaryRequest called! args length: ${args.length}`);\n        const MetadataConstructor = GrpcInstrumentation.metadataStore.get(version) || self.Metadata;\n\n        if (!MetadataConstructor) {\n          logger.warn(\n            `[GrpcInstrumentation] Metadata constructor not found for version ${version}`,\n          );\n          return original.apply(this, args);\n        }\n\n        // Use defensive parsing to extract and validate all parameters\n        let parsedParams: {\n          method: string;\n          serialize: Function;\n          deserialize: Function;\n          argument: any;\n          metadata: any;\n          options: any;\n          callback: Function;\n        };\n\n        try {\n          parsedParams = self.extractRequestParameters(args, MetadataConstructor);\n        } catch (error) {\n          logger.error(`[GrpcInstrumentation] Error parsing makeUnaryRequest arguments:`, error);\n          // Fall back to original function if we can't parse the arguments\n          return original.apply(this, args);\n        }\n\n        const { method: path, argument, metadata, options, callback } = parsedParams;\n\n        let method: string;\n        let service: string;\n        let readableBody: any;\n        let bufferMap: Record<\n          string,\n          {\n            value: string;\n            encoding: string;\n          }\n        >;\n        let jsonableStringMap: Record<string, string>;\n        let readableMetadata: ReadableMetadata;\n\n        try {\n          ({ method, service } = parseGrpcPath(path));\n          ({ readableBody, bufferMap, jsonableStringMap } = serializeGrpcPayload(argument));\n          readableMetadata = serializeGrpcMetadata(metadata);\n        } catch (error) {\n          logger.error(`[GrpcInstrumentation] Error parsing makeUnaryRequest arguments:`, error);\n          // Fall back to original function if we can't parse the arguments\n          return original.apply(this, args);\n        }\n\n        const inputMeta: BufferMetadata = {\n          bufferMap,\n          jsonableStringMap,\n        };\n\n        const inputValue: GrpcClientInputValue = {\n          method,\n          service,\n          body: readableBody,\n          metadata: readableMetadata,\n          inputMeta,\n        };\n\n        // Handle replay mode\n        if (self.mode === TuskDriftMode.REPLAY) {\n          const stackTrace = captureStackTrace([\"GrpcInstrumentation\"]);\n\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              callback(null, undefined);\n              return;\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => original.apply(this, args),\n                {\n                  name: \"grpc.client.unary\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"client\",\n                  packageType: PackageType.GRPC,\n                  packageName: GRPC_MODULE_NAME,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                },\n                (spanInfo) => {\n                  return self._handleReplayUnaryRequest(\n                    spanInfo,\n                    inputValue,\n                    callback,\n                    MetadataConstructor,\n                    stackTrace,\n                  );\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => original.apply(this, args),\n            recordModeHandler: ({ isPreAppStart }) => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => original.apply(this, args),\n                {\n                  name: \"grpc.client.unary\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"client\",\n                  packageType: PackageType.GRPC,\n                  packageName: GRPC_MODULE_NAME,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart,\n                },\n                (spanInfo) => {\n                  return self._handleRecordUnaryRequest(\n                    spanInfo,\n                    original,\n                    this,\n                    parsedParams,\n                    callback,\n                  );\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          return original.apply(this, args);\n        }\n      };\n    };\n  }\n\n  private _getMakeServerStreamRequestPatchFn(version: string) {\n    const self = this;\n    logger.debug(\n      `[GrpcInstrumentation] _getMakeServerStreamRequestPatchFn called for version: ${version}`,\n    );\n    return (original: Function) => {\n      return function makeServerStreamRequest(this: any, ...args: any[]) {\n        logger.debug(\n          `[GrpcInstrumentation] makeServerStreamRequest called! args length: ${args.length}`,\n        );\n        const MetadataConstructor = GrpcInstrumentation.metadataStore.get(version) || self.Metadata;\n\n        if (!MetadataConstructor) {\n          logger.warn(\n            `[GrpcInstrumentation] Metadata constructor not found for version ${version}`,\n          );\n          return original.apply(this, args);\n        }\n\n        // Parse arguments for server stream request\n        // Signature: (method, serialize, deserialize, argument, metadata?, options?)\n        let parsedParams: {\n          method: string;\n          serialize: Function;\n          deserialize: Function;\n          argument: any;\n          metadata: any;\n          options: any;\n        };\n\n        try {\n          parsedParams = self.extractServerStreamRequestParameters(args, MetadataConstructor);\n        } catch (error) {\n          logger.error(\n            `[GrpcInstrumentation] Error parsing makeServerStreamRequest arguments:`,\n            error,\n          );\n          // Fall back to original function if we can't parse the arguments\n          return original.apply(this, args);\n        }\n\n        const { method: path, argument, metadata, options } = parsedParams;\n\n        let method: string;\n        let service: string;\n        let readableBody: any;\n        let bufferMap: Record<\n          string,\n          {\n            value: string;\n            encoding: string;\n          }\n        >;\n        let jsonableStringMap: Record<string, string>;\n        let readableMetadata: ReadableMetadata;\n\n        try {\n          ({ method, service } = parseGrpcPath(path));\n          ({ readableBody, bufferMap, jsonableStringMap } = serializeGrpcPayload(argument));\n          readableMetadata = serializeGrpcMetadata(metadata);\n        } catch (error) {\n          logger.error(\n            `[GrpcInstrumentation] Error parsing makeServerStreamRequest arguments:`,\n            error,\n          );\n          // Fall back to original function if we can't parse the arguments\n          return original.apply(this, args);\n        }\n\n        const inputMeta: BufferMetadata = {\n          bufferMap,\n          jsonableStringMap,\n        };\n\n        const inputValue: GrpcClientInputValue = {\n          method,\n          service,\n          body: readableBody,\n          metadata: readableMetadata,\n          inputMeta,\n        };\n\n        // Handle replay mode\n        if (self.mode === TuskDriftMode.REPLAY) {\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              // Create a Readable stream instead of EventEmitter\n              const stream = new Readable({\n                objectMode: true, // Important for gRPC which streams objects\n                read() {\n                  // No-op: data will be pushed asynchronously when mock data arrives\n                },\n              });\n\n              // Add gRPC-specific methods\n              Object.assign(stream, {\n                cancel() {},\n                getPeer: () => \"0.0.0.0:0000\",\n                call: undefined,\n              });\n\n              return stream;\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => original.apply(this, args),\n                {\n                  name: \"grpc.client.server_stream\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"client\",\n                  packageType: PackageType.GRPC,\n                  packageName: GRPC_MODULE_NAME,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                },\n                (spanInfo) => {\n                  return self._handleReplayServerStreamRequest(\n                    spanInfo,\n                    inputValue,\n                    MetadataConstructor,\n                  );\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => original.apply(this, args),\n            recordModeHandler: ({ isPreAppStart }) => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => original.apply(this, args),\n                {\n                  name: \"grpc.client.server_stream\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"client\",\n                  packageType: PackageType.GRPC,\n                  packageName: GRPC_MODULE_NAME,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart,\n                },\n                (spanInfo) => {\n                  return self._handleRecordServerStreamRequest(\n                    spanInfo,\n                    original,\n                    this,\n                    parsedParams,\n                  );\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          return original.apply(this, args);\n        }\n      };\n    };\n  }\n\n  private extractServerStreamRequestParameters(\n    args: any[],\n    MetadataConstructor: any,\n  ): {\n    method: string;\n    serialize: Function;\n    deserialize: Function;\n    argument: any;\n    metadata: any;\n    options: any;\n  } {\n    // Server stream request signature:\n    // (method, serialize, deserialize, argument, metadata?, options?)\n    const method = args[0];\n    const serialize = args[1];\n    const deserialize = args[2];\n    const argument = args[3];\n\n    // args[4] can be metadata or options\n    // args[5] can be options\n    let metadata: any;\n    let options: any;\n\n    if (args.length === 6) {\n      // Both metadata and options provided\n      metadata = args[4];\n      options = args[5];\n    } else if (args.length === 5) {\n      // Either metadata or options provided\n      // Check if it's a Metadata instance\n      if (args[4] instanceof MetadataConstructor) {\n        metadata = args[4];\n        options = {};\n      } else {\n        metadata = new MetadataConstructor();\n        options = args[4] || {};\n      }\n    } else {\n      metadata = new MetadataConstructor();\n      options = {};\n    }\n\n    return { method, serialize, deserialize, argument, metadata, options };\n  }\n\n  private _handleRecordUnaryRequest(\n    spanInfo: SpanInfo,\n    original: Function,\n    context: any,\n    parsedParams: {\n      method: string;\n      serialize: Function;\n      deserialize: Function;\n      argument: any;\n      metadata: any;\n      options: any;\n      callback: Function;\n    },\n    callback: Function,\n  ): any {\n    let isResponseReceived = false;\n    let isStatusEmitted = false;\n    let hasErrorOccurred = false;\n    let isSpanCompleted = false;\n    let readableResponseBody: any;\n    let responseBufferMap: Record<string, { value: string; encoding: string }> = {};\n    let responseJsonableStringMap: Record<string, any> = {};\n    let status: {\n      code: number;\n      details: string;\n      metadata: Record<string, any>;\n    };\n    let responseMetadataInitial: any = {};\n    let serviceError: any;\n\n    /**\n     * Completes the span exactly once, regardless of which event fires first.\n     * gRPC's asynchronous nature means the callback and status event can fire in any order,\n     * so we need to guard against double span completion.\n     */\n    const completeSpan = (output: any, statusCode: SpanStatusCode, errorMessage?: string) => {\n      if (isSpanCompleted) {\n        return; // Span already completed, prevent double-ending\n      }\n      isSpanCompleted = true;\n\n      try {\n        SpanUtils.addSpanAttributes(spanInfo.span, {\n          outputValue: output,\n        });\n        SpanUtils.endSpan(spanInfo.span, {\n          code: statusCode,\n          message: errorMessage,\n        });\n      } catch (e) {\n        logger.error(`[GrpcInstrumentation] Error completing span:`, e);\n      }\n    };\n\n    // Wrap the callback to capture response\n    const patchedCallback = (err: any, value: any) => {\n      try {\n        if (err) {\n          serviceError = err;\n          hasErrorOccurred = true;\n        } else {\n          const { readableBody, bufferMap, jsonableStringMap } = serializeGrpcPayload(value);\n          readableResponseBody = readableBody;\n          responseBufferMap = bufferMap;\n          responseJsonableStringMap = jsonableStringMap;\n          isResponseReceived = true;\n        }\n\n        if (isStatusEmitted && isResponseReceived) {\n          const realOutput: GrpcOutputValue = {\n            body: readableResponseBody,\n            metadata: responseMetadataInitial,\n            status,\n            bufferMap: responseBufferMap,\n            jsonableStringMap: responseJsonableStringMap,\n          };\n          completeSpan(realOutput, SpanStatusCode.OK);\n        } else if (isStatusEmitted && hasErrorOccurred) {\n          const errorOutput: GrpcErrorOutput = {\n            error: {\n              message: serviceError.message,\n              name: serviceError.name,\n              stack: serviceError.stack,\n            },\n            status,\n            metadata: responseMetadataInitial,\n          };\n          completeSpan(errorOutput, SpanStatusCode.ERROR, serviceError.message);\n        }\n      } catch (e) {\n        logger.error(`[GrpcInstrumentation] Error in patchedCallback:`, e);\n      }\n\n      return callback(err, value);\n    };\n\n    // Reconstruct the makeUnaryRequest call with all validated parameters\n    // This ensures we always pass the full 7 arguments in the correct format\n    const inputArgs = [\n      parsedParams.method,\n      parsedParams.serialize,\n      parsedParams.deserialize,\n      parsedParams.argument,\n      parsedParams.metadata,\n      parsedParams.options,\n      patchedCallback,\n    ];\n\n    const result = original.apply(context, inputArgs);\n\n    // Listen to metadata and status events\n    result.on(\"metadata\", (initialMetadata: any) => {\n      responseMetadataInitial = serializeGrpcMetadata(initialMetadata);\n    });\n\n    result.on(\"status\", (responseStatus: any) => {\n      status = {\n        code: responseStatus.code,\n        details: responseStatus.details,\n        metadata: serializeGrpcMetadata(responseStatus.metadata),\n      };\n      isStatusEmitted = true;\n\n      if (isResponseReceived) {\n        const realOutput: GrpcOutputValue = {\n          body: readableResponseBody,\n          metadata: responseMetadataInitial,\n          status,\n          bufferMap: responseBufferMap,\n          jsonableStringMap: responseJsonableStringMap,\n        };\n        completeSpan(realOutput, SpanStatusCode.OK);\n      } else if (hasErrorOccurred) {\n        const errorOutput: GrpcErrorOutput = {\n          error: {\n            message: serviceError.message,\n            name: serviceError.name,\n            stack: serviceError.stack,\n          },\n          status,\n          metadata: responseMetadataInitial,\n        };\n        completeSpan(errorOutput, SpanStatusCode.ERROR, serviceError.message);\n      }\n    });\n\n    return result;\n  }\n\n  // Add this helper function to check if it's an error response\n  private isGrpcErrorOutput(result: GrpcOutputValue | GrpcErrorOutput): result is GrpcErrorOutput {\n    return \"error\" in result;\n  }\n\n  private _handleReplayUnaryRequest(\n    spanInfo: SpanInfo,\n    inputValue: GrpcClientInputValue,\n    callback: Function,\n    MetadataConstructor: any,\n    stackTrace?: string,\n  ): any {\n    logger.debug(`[GrpcInstrumentation] Replaying gRPC unary request`);\n\n    // Create emitter immediately\n    const emitter = Object.assign(new EventEmitter(), {\n      cancel() {},\n      getPeer: () => \"0.0.0.0:0000\",\n      call: undefined,\n    });\n\n    // Fetch mock data in background\n    findMockResponseAsync({\n      mockRequestData: {\n        traceId: spanInfo.traceId,\n        spanId: spanInfo.spanId,\n        name: \"grpc.client.unary\",\n        inputValue: inputValue,\n        packageName: GRPC_MODULE_NAME,\n        packageType: PackageType.GRPC,\n        instrumentationName: this.INSTRUMENTATION_NAME,\n        submoduleName: \"client\",\n        kind: SpanKind.CLIENT,\n        stackTrace,\n      },\n      tuskDrift: this.tuskDrift,\n    })\n      .then((mockData) => {\n        if (!mockData) {\n          logger.warn(\n            `[GrpcInstrumentation] No mock data found for gRPC request: ${inputValue.service}/${inputValue.method}`,\n            inputValue,\n          );\n          throw new Error(`[GrpcInstrumentation] No matching mock found for gRPC unary request`);\n        }\n\n        const mockResult: GrpcOutputValue | GrpcErrorOutput = mockData.result;\n        let status: any;\n\n        // Check if it's an error response\n        if (this.isGrpcErrorOutput(mockResult)) {\n          const { error, status: errorStatus } = mockResult;\n          status = {\n            code: errorStatus.code,\n            details: errorStatus.details,\n            metadata: deserializeGrpcMetadata(MetadataConstructor, errorStatus.metadata),\n          };\n\n          const errorObj = Object.assign(new Error(error.message), {\n            name: error.name,\n            stack: error.stack,\n            ...status,\n          });\n\n          callback(errorObj);\n        } else {\n          // Success response\n          const { body, status: successStatus, bufferMap, jsonableStringMap } = mockResult;\n          const bufferMapToUse = bufferMap || {};\n          const jsonableStringMapToUse = jsonableStringMap || {};\n\n          status = {\n            code: successStatus.code,\n            details: successStatus.details,\n            metadata: deserializeGrpcMetadata(MetadataConstructor, successStatus.metadata),\n          };\n\n          const realResponse = deserializeGrpcPayload(body, bufferMapToUse, jsonableStringMapToUse);\n          callback(null, realResponse);\n        }\n\n        // Emit events\n        process.nextTick(() => {\n          if (mockResult.metadata) {\n            emitter.emit(\n              \"metadata\",\n              deserializeGrpcMetadata(MetadataConstructor, mockResult.metadata),\n            );\n          }\n          emitter.emit(\"status\", status);\n        });\n      })\n      .catch((error) => {\n        logger.error(`[GrpcInstrumentation] Error fetching mock data:`, error);\n        callback(error);\n      });\n\n    // Return emitter immediately (synchronously)\n    return emitter;\n  }\n\n  private _handleRecordServerStreamRequest(\n    spanInfo: SpanInfo,\n    original: Function,\n    context: any,\n    parsedParams: {\n      method: string;\n      serialize: Function;\n      deserialize: Function;\n      argument: any;\n      metadata: any;\n      options: any;\n    },\n  ): any {\n    let isStatusEmitted = false;\n    let hasErrorOccurred = false;\n    let isSpanCompleted = false;\n    let streamResponses: any[] = [];\n    let status: {\n      code: number;\n      details: string;\n      metadata: Record<string, any>;\n    };\n    let responseMetadataInitial: any = {};\n    let serviceError: any;\n\n    /**\n     * Completes the span exactly once\n     */\n    const completeSpan = (output: any, statusCode: SpanStatusCode, errorMessage?: string) => {\n      if (isSpanCompleted) {\n        return;\n      }\n      isSpanCompleted = true;\n\n      try {\n        SpanUtils.addSpanAttributes(spanInfo.span, {\n          outputValue: output,\n        });\n        SpanUtils.endSpan(spanInfo.span, {\n          code: statusCode,\n        });\n      } catch (e) {\n        logger.error(`[GrpcInstrumentation] Error completing span:`, e);\n      }\n    };\n\n    // Construct the makeServerStreamRequest call\n    const inputArgs = [\n      parsedParams.method,\n      parsedParams.serialize,\n      parsedParams.deserialize,\n      parsedParams.argument,\n      parsedParams.metadata,\n      parsedParams.options,\n    ];\n\n    const stream = original.apply(context, inputArgs);\n\n    // Listen to data events to collect all streamed responses\n    stream.on(\"data\", (data: any) => {\n      try {\n        const { readableBody, bufferMap, jsonableStringMap } = serializeGrpcPayload(data);\n        streamResponses.push({\n          body: readableBody,\n          bufferMap,\n          jsonableStringMap,\n        });\n      } catch (e) {\n        logger.error(`[GrpcInstrumentation] Error serializing stream data:`, e);\n      }\n    });\n\n    // Listen to metadata event\n    stream.on(\"metadata\", (initialMetadata: any) => {\n      responseMetadataInitial = serializeGrpcMetadata(initialMetadata);\n    });\n\n    // Listen to error event\n    stream.on(\"error\", (err: any) => {\n      serviceError = err;\n      hasErrorOccurred = true;\n    });\n\n    // Listen to status event (emitted when stream completes)\n    stream.on(\"status\", (responseStatus: any) => {\n      status = {\n        code: responseStatus.code,\n        details: responseStatus.details,\n        metadata: serializeGrpcMetadata(responseStatus.metadata),\n      };\n      isStatusEmitted = true;\n\n      // Complete span when status is received\n      if (!hasErrorOccurred && streamResponses.length > 0) {\n        const output: GrpcOutputValue = {\n          body: streamResponses,\n          metadata: responseMetadataInitial,\n          status,\n          bufferMap: {},\n          jsonableStringMap: {},\n        };\n        completeSpan(output, SpanStatusCode.OK);\n      } else if (!hasErrorOccurred && streamResponses.length === 0) {\n        // Empty stream is still successful\n        const output: GrpcOutputValue = {\n          body: [],\n          metadata: responseMetadataInitial,\n          status,\n          bufferMap: {},\n          jsonableStringMap: {},\n        };\n        completeSpan(output, SpanStatusCode.OK);\n      } else if (hasErrorOccurred) {\n        const errorOutput: GrpcErrorOutput = {\n          error: {\n            message: serviceError.message,\n            name: serviceError.name,\n            stack: serviceError.stack,\n          },\n          status,\n          metadata: responseMetadataInitial,\n        };\n        completeSpan(errorOutput, SpanStatusCode.ERROR, serviceError.message);\n      }\n    });\n\n    return stream;\n  }\n\n  private _handleReplayServerStreamRequest(\n    spanInfo: SpanInfo,\n    inputValue: GrpcClientInputValue,\n    MetadataConstructor: any,\n  ): any {\n    logger.debug(`[GrpcInstrumentation] Replaying gRPC server stream request`);\n\n    // Create a Readable stream instead of EventEmitter\n    const stream = new Readable({\n      objectMode: true, // Important for gRPC which streams objects\n      read() {\n        // No-op: data will be pushed asynchronously when mock data arrives\n      },\n    });\n\n    // Add gRPC-specific methods\n    Object.assign(stream, {\n      cancel() {},\n      getPeer: () => \"0.0.0.0:0000\",\n      call: undefined,\n    });\n\n    // Fetch mock data in background\n    findMockResponseAsync({\n      mockRequestData: {\n        traceId: spanInfo.traceId,\n        spanId: spanInfo.spanId,\n        name: \"grpc.client.server_stream\",\n        inputValue: inputValue,\n        packageName: GRPC_MODULE_NAME,\n        packageType: PackageType.GRPC,\n        instrumentationName: this.INSTRUMENTATION_NAME,\n        submoduleName: \"client\",\n        kind: SpanKind.CLIENT,\n      },\n      tuskDrift: this.tuskDrift,\n    })\n      .then((mockData) => {\n        if (!mockData) {\n          logger.warn(\n            `[GrpcInstrumentation] No mock data found for gRPC server stream request: ${inputValue.service}/${inputValue.method}`,\n            inputValue,\n          );\n\n          throw new Error(\n            `[GrpcInstrumentation] No matching mock found for gRPC server stream request`,\n          );\n        }\n\n        const mockResult: GrpcOutputValue | GrpcErrorOutput = mockData.result;\n\n        // Emit events on next tick to simulate async behavior\n        process.nextTick(() => {\n          if (this.isGrpcErrorOutput(mockResult)) {\n            // Handle error case\n            const { error, status: errorStatus } = mockResult;\n            const status = {\n              code: errorStatus.code,\n              details: errorStatus.details,\n              metadata: deserializeGrpcMetadata(MetadataConstructor, errorStatus.metadata),\n            };\n\n            if (mockResult.metadata) {\n              stream.emit(\n                \"metadata\",\n                deserializeGrpcMetadata(MetadataConstructor, mockResult.metadata),\n              );\n            }\n\n            const errorObj = Object.assign(new Error(error.message), {\n              name: error.name,\n              stack: error.stack,\n              ...status,\n            });\n\n            stream.emit(\"error\", errorObj);\n            stream.emit(\"status\", status);\n            stream.push(null); // Signal end of stream\n          } else {\n            // Handle success case - emit data events for each item in the stream\n            const { body, status: successStatus } = mockResult;\n            const status = {\n              code: successStatus.code,\n              details: successStatus.details,\n              metadata: deserializeGrpcMetadata(MetadataConstructor, successStatus.metadata),\n            };\n\n            if (mockResult.metadata) {\n              stream.emit(\n                \"metadata\",\n                deserializeGrpcMetadata(MetadataConstructor, mockResult.metadata),\n              );\n            }\n\n            // Push data to the readable stream\n            if (Array.isArray(body)) {\n              body.forEach((item: any) => {\n                const bufferMapToUse = item.bufferMap || {};\n                const jsonableStringMapToUse = item.jsonableStringMap || {};\n                const realResponse = deserializeGrpcPayload(\n                  item.body,\n                  bufferMapToUse,\n                  jsonableStringMapToUse,\n                );\n                stream.push(realResponse); // Push to stream instead of emit\n              });\n            }\n\n            stream.push(null); // Signal end of stream (important!)\n            stream.emit(\"status\", status);\n          }\n        });\n      })\n      .catch((error) => {\n        logger.error(`[GrpcInstrumentation] Error fetching mock data for server stream:`, error);\n        process.nextTick(() => {\n          stream.emit(\"error\", error);\n          stream.emit(\"status\", {\n            code: 2, // UNKNOWN\n            details: error.message,\n            metadata: new MetadataConstructor(),\n          });\n          stream.push(null); // Signal end of stream\n        });\n      });\n\n    // Return stream immediately (synchronously)\n    return stream;\n  }\n\n  // NOTE: Not using this yet. This is somewhat working, haven't full tested it yet\n  // Adding this would require more changes to replay grpc server calls. Holding off until a customer asks for it\n  // private _getRegisterPatchFn(version: string) {\n  //   const self = this;\n\n  //   return (originalRegister: Function) => {\n  //     return function register(this: any, ...args: any[]) {\n  //       const path = args[0];\n  //       const handler = args[1];\n  //       const type = args[4]; // 'unary', 'clientStream', 'serverStream', 'bidi'\n\n  //       // Only instrument unary calls for now\n  //       if (type !== \"unary\") {\n  //         return originalRegister.apply(this, args);\n  //       }\n\n  //       // Patch the handler\n  //       const patchedHandler = self._getHandlerPatchFn(path, version)(handler);\n  //       const newArgs = [path, patchedHandler, ...args.slice(2)];\n\n  //       if (self.mode === TuskDriftMode.RECORD) {\n  //         return originalRegister.apply(this, newArgs);\n  //       } else if (self.mode === TuskDriftMode.REPLAY) {\n  //         // In replay mode, we still register the handler but it will use mocked data\n  //         return originalRegister.apply(this, newArgs);\n  //       } else {\n  //         return originalRegister.apply(this, args);\n  //       }\n  //     };\n  //   };\n  // }\n\n  // NOTE: Not using this yet. This is somewhat working, haven't full tested it yet\n  // Adding this would require more changes to replay grpc server calls. Holding off until a customer asks for it\n  // private _getHandlerPatchFn(path: string, version: string) {\n  //   const self = this;\n\n  //   return (originalHandler: Function) => {\n  //     return function handler(this: any, call: any, callback: Function) {\n  //       const { method, service } = extractServiceAndMethodFromPath(path);\n  //       const { request: requestBody, metadata: requestMetadata } = call;\n\n  //       const { readableBody, bufferMap, jsonableStringMap } =\n  //         getReadableBodyAndBufferMap(requestBody);\n  //       const readableMetadata = getReadableMetadata(requestMetadata);\n\n  //       const inputValue: GrpcServerInputValue = {\n  //         method,\n  //         service,\n  //         body: readableBody,\n  //         metadata: readableMetadata,\n  //       };\n\n  //       const inputMeta: BufferMetadata = {\n  //         bufferMap,\n  //         jsonableStringMap,\n  //       };\n\n  //       if (self.mode === TuskDriftMode.RECORD) {\n  //         return handleRecordMode({\n  //           originalFunctionCall: () => originalHandler.call(this, call, callback),\n  //           recordModeHandler: ({ isPreAppStart }) => {\n  //             return SpanUtils.createAndExecuteSpan(\n  //               self.mode,\n  //               () => originalHandler.call(this, call, callback),\n  //               {\n  //                 name: \"grpc.server.unary\",\n  //                 kind: SpanKind.SERVER,\n  //                 submodule: \"server\",\n  //                 packageType: PackageType.GRPC,\n  //                 packageName: GRPC_MODULE_NAME,\n  //                 instrumentationName: self.INSTRUMENTATION_NAME,\n  //                 inputValue: inputValue,\n  //                 isPreAppStart,\n  //               },\n  //               (spanInfo) => {\n  //                 return self._handleRecordServerHandler(\n  //                   spanInfo,\n  //                   originalHandler,\n  //                   this,\n  //                   call,\n  //                   callback,\n  //                   version,\n  //                 );\n  //               },\n  //             );\n  //           },\n  //           spanKind: SpanKind.SERVER,\n  //         });\n  //       } else if (self.mode === TuskDriftMode.REPLAY) {\n  //         return handleReplayMode({\n  //           replayModeHandler: () => {\n  //             return SpanUtils.createAndExecuteSpan(\n  //               self.mode,\n  //               () => originalHandler.call(this, call, callback),\n  //               {\n  //                 name: \"grpc.server.unary\",\n  //                 kind: SpanKind.SERVER,\n  //                 submodule: \"server\",\n  //                 packageType: PackageType.GRPC,\n  //                 packageName: GRPC_MODULE_NAME,\n  //                 instrumentationName: self.INSTRUMENTATION_NAME,\n  //                 inputValue: inputValue,\n  //                 isPreAppStart: false,\n  //               },\n  //               (spanInfo) => {\n  //                 return self._handleReplayServerHandler(\n  //                   spanInfo,\n  //                   originalHandler,\n  //                   this,\n  //                   call,\n  //                   callback,\n  //                 );\n  //               },\n  //             );\n  //           },\n  //         });\n  //       } else {\n  //         return originalHandler.call(this, call, callback);\n  //       }\n  //     };\n  //   };\n  // }\n\n  // NOTE: Not using this yet. This is somewhat working, haven't full tested it yet\n  // Adding this would require more changes to replay grpc server calls. Holding off until a customer asks for it\n  // private _handleRecordServerHandler(\n  //   spanInfo: SpanInfo,\n  //   originalHandler: Function,\n  //   context: any,\n  //   call: any,\n  //   originalCallback: Function,\n  //   version: string,\n  // ): void {\n  //   const MetadataConstructor = GrpcInstrumentation.metadataStore.get(version) || this.Metadata;\n  //   let initialMetadata: any = {};\n\n  //   // Wrap sendMetadata to capture initial metadata\n  //   const originalSendMetadata = call.sendMetadata;\n  //   call.sendMetadata = function (metadata: any) {\n  //     initialMetadata = getReadableMetadata(metadata);\n  //     if (originalSendMetadata) {\n  //       originalSendMetadata.call(call, metadata);\n  //     }\n  //   };\n\n  //   // Wrap the callback to capture response\n  //   const patchedCallback = (err: any, response: any, trailingMetadata?: any) => {\n  //     const metadata = trailingMetadata || new MetadataConstructor();\n\n  //     if (err) {\n  //       const status = {\n  //         code: err.code || 2, // 2 = UNKNOWN\n  //         details: err.details || err.message,\n  //         metadata: getReadableMetadata(metadata),\n  //       };\n\n  //       const errorOutput = {\n  //         error: {\n  //           message: err.message,\n  //           name: err.name,\n  //           stack: err.stack,\n  //         },\n  //         status,\n  //         metadata: initialMetadata,\n  //       };\n\n  //       SpanUtils.addSpanAttributes(spanInfo.span, {\n  //         outputValue: errorOutput,\n  //       });\n  //       SpanUtils.endSpan(spanInfo.span, {\n  //         code: SpanStatusCode.ERROR,\n  //         message: err.message,\n  //       });\n  //     } else {\n  //       const { readableBody, bufferMap, jsonableStringMap } =\n  //         getReadableBodyAndBufferMap(response);\n\n  //       const status = {\n  //         code: 0, // OK\n  //         details: \"OK\",\n  //         metadata: getReadableMetadata(metadata),\n  //       };\n\n  //       const successOutput: GrpcOutputValue = {\n  //         body: readableBody,\n  //         status,\n  //         metadata: initialMetadata,\n  //       };\n\n  //       SpanUtils.addSpanAttributes(spanInfo.span, {\n  //         outputValue: successOutput,\n  //       });\n  //       SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n  //     }\n\n  //     return originalCallback(err, response, metadata);\n  //   };\n\n  //   try {\n  //     originalHandler.call(context, call, patchedCallback);\n  //   } catch (e: any) {\n  //     logger.error(`[GrpcInstrumentation] Error in server handler:`, e);\n  //     const status = {\n  //       code: 2, // UNKNOWN\n  //       details: `Server method handler threw error ${e.message}`,\n  //       metadata: {},\n  //     };\n\n  //     const errorOutput = {\n  //       error: {\n  //         message: e.message,\n  //         name: e.name,\n  //         stack: e.stack,\n  //       },\n  //       status,\n  //       metadata: initialMetadata,\n  //     };\n\n  //     SpanUtils.addSpanAttributes(spanInfo.span, {\n  //       outputValue: errorOutput,\n  //     });\n  //     SpanUtils.endSpan(spanInfo.span, {\n  //       code: SpanStatusCode.ERROR,\n  //       message: e.message,\n  //     });\n\n  //     throw e;\n  //   }\n  // }\n\n  // NOTE: Not using this yet. This is somewhat working, haven't full tested it yet\n  // Adding this would require more changes to replay grpc server calls. Holding off until a customer asks for it\n  // private _handleReplayServerHandler(\n  //   spanInfo: SpanInfo,\n  //   originalHandler: Function,\n  //   context: any,\n  //   call: any,\n  //   originalCallback: Function,\n  // ): void {\n  //   // In replay mode, we still execute the handler to maintain server behavior\n  //   // but the downstream calls will be mocked\n  //   try {\n  //     originalHandler.call(context, call, originalCallback);\n  //   } catch (e: any) {\n  //     logger.error(`[GrpcInstrumentation] Error in replay server handler:`, e);\n  //     SpanUtils.endSpan(spanInfo.span, {\n  //       code: SpanStatusCode.ERROR,\n  //       message: e.message,\n  //     });\n  //     throw e;\n  //   }\n  // }\n\n  private _getWaitForReadyPatchFn() {\n    const self = this;\n\n    return (original: Function) => {\n      return function waitForReady(this: any, deadline: any, callback: Function) {\n        if (self.mode === TuskDriftMode.REPLAY) {\n          // In replay mode, immediately call the callback to skip waiting\n          process.nextTick(() => callback());\n          return;\n        } else {\n          return original.apply(this, [deadline, callback]);\n        }\n      };\n    };\n  }\n\n  private _getClosePatchFn() {\n    const self = this;\n\n    return (original: Function) => {\n      return function close(this: any) {\n        if (self.mode === TuskDriftMode.REPLAY) {\n          // In replay mode, don't actually close the client\n          return;\n        } else {\n          return original.apply(this, arguments);\n        }\n      };\n    };\n  }\n\n  private _getGetChannelPatchFn() {\n    const self = this;\n\n    return (original: Function) => {\n      return function getChannel(this: any) {\n        if (self.mode === TuskDriftMode.REPLAY) {\n          // In replay mode, return a mock channel object\n          return {};\n        } else {\n          return original.apply(this, arguments);\n        }\n      };\n    };\n  }\n\n  private _wrap(target: any, propertyName: string, wrapper: (original: any) => any): void {\n    wrap(target, propertyName, wrapper);\n  }\n}\n","import { FirestoreDocumentResult, FirestoreDocumentData } from \"../types\";\n\n/**\n * Mock Firestore DocumentSnapshot for replay mode\n * Mimics the Firestore DocumentSnapshot API\n */\nexport class TdFirestoreDocumentMock {\n  private documentData: FirestoreDocumentResult;\n\n  constructor(documentData: FirestoreDocumentResult) {\n    this.documentData = documentData;\n  }\n\n  /**\n   * The document's identifier within its collection\n   */\n  get id(): string {\n    return this.documentData.id;\n  }\n\n  /**\n   * Whether the document exists\n   */\n  get exists(): boolean {\n    return this.documentData.exists;\n  }\n\n  /**\n   * A DocumentReference to the document location\n   */\n  get ref(): any {\n    // Return a minimal mock reference\n    return {\n      id: this.documentData.id,\n      path: this.documentData.path,\n    };\n  }\n\n  /**\n   * The time the document was created (if available)\n   */\n  get createTime(): any {\n    return this.documentData.createTime\n      ? {\n          seconds: this.documentData.createTime.seconds,\n          nanoseconds: this.documentData.createTime.nanoseconds,\n          toDate: () =>\n            new Date(\n              this.documentData.createTime!.seconds * 1000 +\n                this.documentData.createTime!.nanoseconds / 1000000,\n            ),\n        }\n      : null;\n  }\n\n  /**\n   * The time the document was last updated (if available)\n   */\n  get updateTime(): any {\n    return this.documentData.updateTime\n      ? {\n          seconds: this.documentData.updateTime.seconds,\n          nanoseconds: this.documentData.updateTime.nanoseconds,\n          toDate: () =>\n            new Date(\n              this.documentData.updateTime!.seconds * 1000 +\n                this.documentData.updateTime!.nanoseconds / 1000000,\n            ),\n        }\n      : null;\n  }\n\n  /**\n   * The time the document was read (if available)\n   */\n  get readTime(): any {\n    return this.documentData.readTime\n      ? {\n          seconds: this.documentData.readTime.seconds,\n          nanoseconds: this.documentData.readTime.nanoseconds,\n          toDate: () =>\n            new Date(\n              this.documentData.readTime!.seconds * 1000 +\n                this.documentData.readTime!.nanoseconds / 1000000,\n            ),\n        }\n      : null;\n  }\n\n  /**\n   * Retrieves all fields in the document as an object\n   */\n  data(): FirestoreDocumentData | undefined {\n    return this.documentData.data;\n  }\n\n  /**\n   * Retrieves the field specified by fieldPath\n   */\n  get(fieldPath: string): any {\n    if (!this.documentData.data) {\n      return undefined;\n    }\n\n    // Simple field path resolution (doesn't handle nested paths with dots)\n    return this.documentData.data[fieldPath];\n  }\n\n  /**\n   * Returns true if the document's data and path are equal to the provided value\n   */\n  isEqual(other: TdFirestoreDocumentMock): boolean {\n    return this.documentData.path === other.documentData.path;\n  }\n}\n","import { FirestoreQueryResult } from \"../types\";\nimport { TdFirestoreDocumentMock } from \"./TdFirestoreDocumentMock\";\n\n/**\n * Mock Firestore QuerySnapshot for replay mode\n * Mimics the Firestore QuerySnapshot API\n */\nexport class TdFirestoreQueryMock {\n  private queryResult: FirestoreQueryResult;\n  private _docs: TdFirestoreDocumentMock[];\n\n  constructor(queryResult: FirestoreQueryResult) {\n    this.queryResult = queryResult;\n    this._docs = queryResult.docs.map((doc) => new TdFirestoreDocumentMock(doc));\n  }\n\n  /**\n   * An array of all the documents in the QuerySnapshot\n   */\n  get docs(): TdFirestoreDocumentMock[] {\n    return this._docs;\n  }\n\n  /**\n   * The number of documents in the QuerySnapshot\n   */\n  get size(): number {\n    return this.queryResult.size;\n  }\n\n  /**\n   * True if there are no documents in the QuerySnapshot\n   */\n  get empty(): boolean {\n    return this.queryResult.empty;\n  }\n\n  /**\n   * The time the query snapshot was read\n   */\n  get readTime(): any {\n    return this.queryResult.readTime\n      ? {\n          seconds: this.queryResult.readTime.seconds,\n          nanoseconds: this.queryResult.readTime.nanoseconds,\n          toDate: () =>\n            new Date(\n              this.queryResult.readTime!.seconds * 1000 +\n                this.queryResult.readTime!.nanoseconds / 1000000,\n            ),\n        }\n      : null;\n  }\n\n  /**\n   * The query on which you called get or onSnapshot\n   */\n  get query(): any {\n    // Return a minimal mock query reference\n    return {\n      // Mock query object - can be extended if needed\n    };\n  }\n\n  /**\n   * Enumerates all of the documents in the QuerySnapshot\n   */\n  forEach(callback: (result: TdFirestoreDocumentMock) => void, thisArg?: any): void {\n    this._docs.forEach(callback, thisArg);\n  }\n\n  /**\n   * Returns an array of the documents changes since the last snapshot\n   */\n  docChanges(): any[] {\n    // In replay mode, we don't track changes, so return empty array\n    return [];\n  }\n\n  /**\n   * Returns true if the document data and path are equal to this QuerySnapshot\n   */\n  isEqual(other: TdFirestoreQueryMock): boolean {\n    if (this.size !== other.size) {\n      return false;\n    }\n    // Simple comparison based on size - could be enhanced\n    return this.size === other.size && this.empty === other.empty;\n  }\n}\n","import { FirestoreWriteResult } from \"../types\";\n\n/**\n * Mock Firestore WriteResult for replay mode\n * Mimics the Firestore WriteResult API\n */\nexport class TdFirestoreWriteResultMock {\n  private result: FirestoreWriteResult;\n\n  constructor(result: FirestoreWriteResult) {\n    this.result = result;\n  }\n\n  /**\n   * The write time as reported by the server\n   */\n  get writeTime(): any {\n    return this.result.writeTime\n      ? {\n          seconds: this.result.writeTime.seconds,\n          nanoseconds: this.result.writeTime.nanoseconds,\n          toDate: () =>\n            new Date(\n              this.result.writeTime!.seconds * 1000 +\n                this.result.writeTime!.nanoseconds / 1000000,\n            ),\n        }\n      : null;\n  }\n\n  /**\n   * Returns true if this WriteResult is equal to the provided one\n   */\n  isEqual(other: TdFirestoreWriteResultMock): boolean {\n    if (!this.writeTime || !other.writeTime) {\n      return this.writeTime === other.writeTime;\n    }\n    return (\n      this.writeTime.seconds === other.writeTime.seconds &&\n      this.writeTime.nanoseconds === other.writeTime.nanoseconds\n    );\n  }\n}\n","import { TdInstrumentationBase } from \"../../core/baseClasses/TdInstrumentationBase\";\nimport { TdInstrumentationNodeModule } from \"../../core/baseClasses/TdInstrumentationNodeModule\";\nimport { TdInstrumentationNodeModuleFile } from \"../../core/baseClasses/TdInstrumentationNodeModuleFile\";\nimport { SpanUtils, SpanInfo } from \"../../../core/tracing/SpanUtils\";\nimport { SpanKind, SpanStatusCode } from \"@opentelemetry/api\";\nimport { TuskDriftCore, TuskDriftMode } from \"../../../core/TuskDrift\";\nimport { handleRecordMode, handleReplayMode } from \"../../core/utils/modeUtils\";\nimport { findMockResponseAsync, findMockResponseSync } from \"../../core/utils/mockResponseUtils\";\nimport { createMockInputValue } from \"../../../core/utils\";\nimport {\n  FirestoreInstrumentationConfig,\n  FirestoreInputValue,\n  FirestoreDocumentResult,\n  FirestoreQueryResult,\n  FirestoreWriteResult,\n} from \"./types\";\nimport { TdFirestoreDocumentMock } from \"./mocks/TdFirestoreDocumentMock\";\nimport { TdFirestoreQueryMock } from \"./mocks/TdFirestoreQueryMock\";\nimport { TdFirestoreWriteResultMock } from \"./mocks/TdFirestoreWriteResultMock\";\nimport { PackageType } from \"@use-tusk/drift-schemas/core/span\";\nimport { logger } from \"../../../core/utils/logger\";\n\nconst FIRESTORE_VERSION = \"7.*\";\nconst PACKAGE_NAME = \"@google-cloud/firestore\";\n\nexport class FirestoreInstrumentation extends TdInstrumentationBase {\n  private readonly INSTRUMENTATION_NAME = \"FirestoreInstrumentation\";\n  private mode: TuskDriftMode;\n  private tuskDrift: TuskDriftCore;\n  private originalCollectionDocFn: Function | null = null;\n\n  constructor(config: FirestoreInstrumentationConfig = {}) {\n    super(PACKAGE_NAME, config);\n    this.mode = config.mode || TuskDriftMode.DISABLED;\n    this.tuskDrift = TuskDriftCore.getInstance();\n  }\n\n  init(): TdInstrumentationNodeModule[] {\n    return [\n      new TdInstrumentationNodeModule({\n        name: PACKAGE_NAME,\n        supportedVersions: [FIRESTORE_VERSION],\n        files: [\n          // Patch DocumentReference methods\n          new TdInstrumentationNodeModuleFile({\n            name: \"@google-cloud/firestore/build/src/reference/document-reference.js\",\n            supportedVersions: [FIRESTORE_VERSION],\n            patch: (moduleExports: any) => this._patchDocumentReference(moduleExports),\n          }),\n          // Patch CollectionReference methods\n          new TdInstrumentationNodeModuleFile({\n            name: \"@google-cloud/firestore/build/src/reference/collection-reference.js\",\n            supportedVersions: [FIRESTORE_VERSION],\n            patch: (moduleExports: any) => this._patchCollectionReference(moduleExports),\n          }),\n          // Patch Query methods\n          new TdInstrumentationNodeModuleFile({\n            name: \"@google-cloud/firestore/build/src/reference/query.js\",\n            supportedVersions: [FIRESTORE_VERSION],\n            patch: (moduleExports: any) => this._patchQuery(moduleExports),\n          }),\n        ],\n      }),\n    ];\n  }\n\n  private _patchDocumentReference(moduleExports: any): any {\n    logger.debug(`[FirestoreInstrumentation] Patching DocumentReference in ${this.mode} mode`);\n\n    if (this.isModulePatched(moduleExports)) {\n      logger.debug(`[FirestoreInstrumentation] DocumentReference already patched, skipping`);\n      return moduleExports;\n    }\n\n    const DocumentReference = moduleExports.DocumentReference;\n    if (!DocumentReference || !DocumentReference.prototype) {\n      logger.warn(`[FirestoreInstrumentation] DocumentReference.prototype not found`);\n      return moduleExports;\n    }\n\n    // Patch DocumentReference methods\n    this._wrap(DocumentReference.prototype, \"get\", this._getDocumentGetPatchFn());\n    this._wrap(DocumentReference.prototype, \"create\", this._getDocumentCreatePatchFn());\n    this._wrap(DocumentReference.prototype, \"set\", this._getDocumentSetPatchFn());\n    this._wrap(DocumentReference.prototype, \"update\", this._getDocumentUpdatePatchFn());\n    this._wrap(DocumentReference.prototype, \"delete\", this._getDocumentDeletePatchFn());\n\n    this.markModuleAsPatched(moduleExports);\n    logger.debug(`[FirestoreInstrumentation] DocumentReference patching complete`);\n\n    return moduleExports;\n  }\n\n  private _patchCollectionReference(moduleExports: any): any {\n    logger.debug(`[FirestoreInstrumentation] Patching CollectionReference in ${this.mode} mode`);\n\n    if (this.isModulePatched(moduleExports)) {\n      logger.debug(`[FirestoreInstrumentation] CollectionReference already patched, skipping`);\n      return moduleExports;\n    }\n\n    const CollectionReference = moduleExports.CollectionReference;\n    if (!CollectionReference || !CollectionReference.prototype) {\n      logger.warn(`[FirestoreInstrumentation] CollectionReference.prototype not found`);\n      return moduleExports;\n    }\n\n    // Save original doc function before patching (needed for replay handlers)\n    this.originalCollectionDocFn = CollectionReference.prototype.doc;\n\n    // Patch CollectionReference methods\n    this._wrap(CollectionReference.prototype, \"add\", this._getCollectionAddPatchFn());\n    this._wrap(CollectionReference.prototype, \"doc\", this._getCollectionDocPatchFn());\n\n    this.markModuleAsPatched(moduleExports);\n    logger.debug(`[FirestoreInstrumentation] CollectionReference patching complete`);\n\n    return moduleExports;\n  }\n\n  private _patchQuery(moduleExports: any): any {\n    logger.debug(`[FirestoreInstrumentation] Patching Query in ${this.mode} mode`);\n\n    if (this.isModulePatched(moduleExports)) {\n      logger.debug(`[FirestoreInstrumentation] Query already patched, skipping`);\n      return moduleExports;\n    }\n\n    const Query = moduleExports.Query;\n    if (!Query || !Query.prototype) {\n      logger.warn(`[FirestoreInstrumentation] Query.prototype not found`);\n      return moduleExports;\n    }\n\n    // Patch Query methods\n    this._wrap(Query.prototype, \"get\", this._getQueryGetPatchFn());\n\n    this.markModuleAsPatched(moduleExports);\n    logger.debug(`[FirestoreInstrumentation] Query patching complete`);\n\n    return moduleExports;\n  }\n\n  private _getDocumentGetPatchFn() {\n    const self = this;\n\n    return (originalGet: Function) => {\n      return function (this: any) {\n        const documentPath = this.path;\n\n        const inputValue: FirestoreInputValue = {\n          operation: \"document.get\",\n          path: documentPath,\n        };\n\n        // Handle replay mode\n        if (self.mode === TuskDriftMode.REPLAY) {\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              const emptyDocumentResult: FirestoreDocumentResult = {\n                exists: false,\n                id: \"\",\n                path: \"\",\n              };\n              return new TdFirestoreDocumentMock(emptyDocumentResult);\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalGet.call(this),\n                {\n                  name: \"firestore.document.get\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"document\",\n                  packageType: PackageType.FIRESTORE,\n                  packageName: PACKAGE_NAME,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                  stopRecordingChildSpans: true,\n                },\n                (spanInfo) => {\n                  return self._handleReplayDocumentGet(spanInfo, inputValue);\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => originalGet.call(this),\n            recordModeHandler: ({ isPreAppStart }) => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalGet.call(this),\n                {\n                  name: \"firestore.document.get\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"document\",\n                  packageType: PackageType.FIRESTORE,\n                  packageName: PACKAGE_NAME,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart,\n                  stopRecordingChildSpans: true,\n                },\n                (spanInfo) => {\n                  return self._handleRecordDocumentGet(spanInfo, originalGet, this);\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          return originalGet.call(this);\n        }\n      };\n    };\n  }\n\n  private async _handleRecordDocumentGet(\n    spanInfo: SpanInfo,\n    originalGet: Function,\n    context: any,\n  ): Promise<any> {\n    const snapshot = await originalGet.call(context);\n\n    // Capture document data\n    const documentResult: FirestoreDocumentResult = {\n      id: snapshot.id,\n      path: snapshot.ref.path,\n      exists: snapshot.exists,\n      data: snapshot.exists ? snapshot.data() : undefined,\n      createTime: snapshot.createTime\n        ? { seconds: snapshot.createTime.seconds, nanoseconds: snapshot.createTime.nanoseconds }\n        : undefined,\n      updateTime: snapshot.updateTime\n        ? { seconds: snapshot.updateTime.seconds, nanoseconds: snapshot.updateTime.nanoseconds }\n        : undefined,\n      readTime: snapshot.readTime\n        ? { seconds: snapshot.readTime.seconds, nanoseconds: snapshot.readTime.nanoseconds }\n        : undefined,\n    };\n\n    try {\n      SpanUtils.addSpanAttributes(spanInfo.span, {\n        outputValue: documentResult,\n      });\n      SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n    } catch {\n      logger.error(`[FirestoreInstrumentation] Error updating span attributes for document.get`);\n    }\n\n    return snapshot;\n  }\n\n  private async _handleReplayDocumentGet(\n    spanInfo: SpanInfo,\n    inputValue: FirestoreInputValue,\n  ): Promise<any> {\n    logger.debug(`[FirestoreInstrumentation] Replaying document.get`);\n\n    const mockData = await findMockResponseAsync({\n      mockRequestData: {\n        traceId: spanInfo.traceId,\n        spanId: spanInfo.spanId,\n        name: \"firestore.document.get\",\n        inputValue: createMockInputValue(inputValue),\n        packageName: PACKAGE_NAME,\n        instrumentationName: this.INSTRUMENTATION_NAME,\n        submoduleName: \"document\",\n        kind: SpanKind.CLIENT,\n      },\n      tuskDrift: this.tuskDrift,\n    });\n\n    if (!mockData) {\n      logger.warn(\n        `[FirestoreInstrumentation] No mock data found for document.get: ${inputValue.path}`,\n      );\n      throw new Error(`[FirestoreInstrumentation] No matching mock found for document.get`);\n    }\n\n    const documentResult = mockData.result as FirestoreDocumentResult;\n    return new TdFirestoreDocumentMock(documentResult);\n  }\n\n  private _getDocumentCreatePatchFn() {\n    const self = this;\n\n    return (originalCreate: Function) => {\n      return function (this: any, data: any) {\n        const documentPath = this.path;\n\n        const inputValue: FirestoreInputValue = {\n          operation: \"document.create\",\n          path: documentPath,\n          data: data,\n        };\n\n        // Handle replay mode\n        if (self.mode === TuskDriftMode.REPLAY) {\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              const now = Date.now();\n              const emptyWriteResult: FirestoreWriteResult = {\n                writeTime: {\n                  seconds: Math.floor(now / 1000),\n                  nanoseconds: (now % 1000) * 1000000,\n                },\n              };\n              return new TdFirestoreWriteResultMock(emptyWriteResult);\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalCreate.call(this, data),\n                {\n                  name: \"firestore.document.create\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"document\",\n                  packageType: PackageType.FIRESTORE,\n                  packageName: PACKAGE_NAME,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                  stopRecordingChildSpans: true,\n                },\n                (spanInfo) => {\n                  return self._handleReplayDocumentWrite(spanInfo, inputValue);\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => originalCreate.call(this, data),\n            recordModeHandler: ({ isPreAppStart }) => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalCreate.call(this, data),\n                {\n                  name: \"firestore.document.create\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"document\",\n                  packageType: PackageType.FIRESTORE,\n                  packageName: PACKAGE_NAME,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart,\n                  stopRecordingChildSpans: true,\n                },\n                (spanInfo) => {\n                  return self._handleRecordDocumentWrite(spanInfo, originalCreate, this, data);\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          return originalCreate.call(this, data);\n        }\n      };\n    };\n  }\n\n  private _getDocumentSetPatchFn() {\n    const self = this;\n\n    return (originalSet: Function) => {\n      return function (this: any, data: any, options?: any) {\n        const documentPath = this.path;\n\n        const inputValue: FirestoreInputValue = {\n          operation: \"document.set\",\n          path: documentPath,\n          data: data,\n          options: options,\n        };\n\n        // Handle replay mode\n        if (self.mode === TuskDriftMode.REPLAY) {\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              const now = Date.now();\n              const emptyWriteResult: FirestoreWriteResult = {\n                writeTime: {\n                  seconds: Math.floor(now / 1000),\n                  nanoseconds: (now % 1000) * 1000000,\n                },\n              };\n              return new TdFirestoreWriteResultMock(emptyWriteResult);\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalSet.call(this, data, options),\n                {\n                  name: \"firestore.document.set\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"document\",\n                  packageType: PackageType.FIRESTORE,\n                  packageName: PACKAGE_NAME,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                  stopRecordingChildSpans: true,\n                },\n                (spanInfo) => {\n                  return self._handleReplayDocumentWrite(spanInfo, inputValue);\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => originalSet.call(this, data, options),\n            recordModeHandler: ({ isPreAppStart }) => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalSet.call(this, data, options),\n                {\n                  name: \"firestore.document.set\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"document\",\n                  packageType: PackageType.FIRESTORE,\n                  packageName: PACKAGE_NAME,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart,\n                  stopRecordingChildSpans: true,\n                },\n                (spanInfo) => {\n                  return self._handleRecordDocumentWrite(\n                    spanInfo,\n                    originalSet,\n                    this,\n                    data,\n                    options,\n                  );\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          return originalSet.call(this, data, options);\n        }\n      };\n    };\n  }\n\n  private _getDocumentUpdatePatchFn() {\n    const self = this;\n\n    return (originalUpdate: Function) => {\n      return function (this: any, ...args: any[]) {\n        const documentPath = this.path;\n\n        // Firestore update() can take either (data) or (field, value, ...moreFieldsAndValues)\n        const inputValue: FirestoreInputValue = {\n          operation: \"document.update\",\n          path: documentPath,\n          data: args.length === 1 ? args[0] : args, // Capture all args\n        };\n\n        // Handle replay mode\n        if (self.mode === TuskDriftMode.REPLAY) {\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              const now = Date.now();\n              const emptyWriteResult: FirestoreWriteResult = {\n                writeTime: {\n                  seconds: Math.floor(now / 1000),\n                  nanoseconds: (now % 1000) * 1000000,\n                },\n              };\n              return new TdFirestoreWriteResultMock(emptyWriteResult);\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalUpdate.apply(this, args),\n                {\n                  name: \"firestore.document.update\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"document\",\n                  packageType: PackageType.FIRESTORE,\n                  packageName: PACKAGE_NAME,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                  stopRecordingChildSpans: true,\n                },\n                (spanInfo) => {\n                  return self._handleReplayDocumentWrite(spanInfo, inputValue);\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => originalUpdate.apply(this, args),\n            recordModeHandler: ({ isPreAppStart }) => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalUpdate.apply(this, args),\n                {\n                  name: \"firestore.document.update\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"document\",\n                  packageType: PackageType.FIRESTORE,\n                  packageName: PACKAGE_NAME,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart,\n                  stopRecordingChildSpans: true,\n                },\n                (spanInfo) => {\n                  return self._handleRecordDocumentWrite(spanInfo, originalUpdate, this, ...args);\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          return originalUpdate.apply(this, args);\n        }\n      };\n    };\n  }\n\n  private _getDocumentDeletePatchFn() {\n    const self = this;\n\n    return (originalDelete: Function) => {\n      return function (this: any, precondition?: any) {\n        const documentPath = this.path;\n\n        const inputValue: FirestoreInputValue = {\n          operation: \"document.delete\",\n          path: documentPath,\n          options: precondition,\n        };\n\n        // Handle replay mode\n        if (self.mode === TuskDriftMode.REPLAY) {\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              const now = Date.now();\n              const emptyWriteResult: FirestoreWriteResult = {\n                writeTime: {\n                  seconds: Math.floor(now / 1000),\n                  nanoseconds: (now % 1000) * 1000000,\n                },\n              };\n              return new TdFirestoreWriteResultMock(emptyWriteResult);\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalDelete.call(this, precondition),\n                {\n                  name: \"firestore.document.delete\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"document\",\n                  packageType: PackageType.FIRESTORE,\n                  packageName: PACKAGE_NAME,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                  stopRecordingChildSpans: true,\n                },\n                (spanInfo) => {\n                  return self._handleReplayDocumentWrite(spanInfo, inputValue);\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => originalDelete.call(this, precondition),\n            recordModeHandler: ({ isPreAppStart }) => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalDelete.call(this, precondition),\n                {\n                  name: \"firestore.document.delete\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"document\",\n                  packageType: PackageType.FIRESTORE,\n                  packageName: PACKAGE_NAME,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart,\n                  stopRecordingChildSpans: true,\n                },\n                (spanInfo) => {\n                  return self._handleRecordDocumentWrite(\n                    spanInfo,\n                    originalDelete,\n                    this,\n                    precondition,\n                  );\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          return originalDelete.call(this, precondition);\n        }\n      };\n    };\n  }\n\n  private async _handleRecordDocumentWrite(\n    spanInfo: SpanInfo,\n    originalWrite: Function,\n    context: any,\n    ...args: any[]\n  ): Promise<any> {\n    const writeResult = await originalWrite.apply(context, args);\n\n    // Capture write result\n    const result: FirestoreWriteResult = {\n      writeTime: writeResult.writeTime\n        ? {\n            seconds: writeResult.writeTime.seconds,\n            nanoseconds: writeResult.writeTime.nanoseconds,\n          }\n        : undefined,\n    };\n\n    try {\n      SpanUtils.addSpanAttributes(spanInfo.span, {\n        outputValue: result,\n      });\n      SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n    } catch {\n      logger.error(`[FirestoreInstrumentation] Error updating span attributes for document.write`);\n    }\n\n    return writeResult;\n  }\n\n  private async _handleReplayDocumentWrite(\n    spanInfo: SpanInfo,\n    inputValue: FirestoreInputValue,\n  ): Promise<any> {\n    logger.debug(`[FirestoreInstrumentation] Replaying document write: ${inputValue.operation}`);\n\n    const mockData = await findMockResponseAsync({\n      mockRequestData: {\n        traceId: spanInfo.traceId,\n        spanId: spanInfo.spanId,\n        name: `firestore.${inputValue.operation}`,\n        inputValue: createMockInputValue(inputValue),\n        packageName: PACKAGE_NAME,\n        instrumentationName: this.INSTRUMENTATION_NAME,\n        submoduleName: \"document\",\n        kind: SpanKind.CLIENT,\n      },\n      tuskDrift: this.tuskDrift,\n    });\n\n    if (!mockData) {\n      logger.warn(\n        `[FirestoreInstrumentation] No mock data found for ${inputValue.operation}: ${inputValue.path}`,\n      );\n      throw new Error(\n        `[FirestoreInstrumentation] No matching mock found for ${inputValue.operation}`,\n      );\n    }\n\n    // Return mock write result with proper API\n    const writeResult = mockData.result as FirestoreWriteResult;\n    return new TdFirestoreWriteResultMock(writeResult);\n  }\n\n  private _getCollectionAddPatchFn() {\n    const self = this;\n\n    return (originalAdd: Function) => {\n      return function (this: any, data: any) {\n        const collectionPath = this.path;\n\n        const inputValue: FirestoreInputValue = {\n          operation: \"collection.add\",\n          path: collectionPath,\n          data: data,\n        };\n\n        // Handle replay mode\n        if (self.mode === TuskDriftMode.REPLAY) {\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              if (!this.originalCollectionDocFn) {\n                logger.error(`[FirestoreInstrumentation] Original doc function not available`);\n                return Promise.reject(new Error(\"Original doc function not available\"));\n              }\n              return this.originalCollectionDocFn.call(this, \"\");\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalAdd.call(this, data),\n                {\n                  name: \"firestore.collection.add\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"collection\",\n                  packageType: PackageType.FIRESTORE,\n                  packageName: PACKAGE_NAME,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                  stopRecordingChildSpans: true,\n                },\n                (spanInfo) => {\n                  return self._handleReplayCollectionAdd(spanInfo, inputValue, this);\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => originalAdd.call(this, data),\n            recordModeHandler: ({ isPreAppStart }) => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalAdd.call(this, data),\n                {\n                  name: \"firestore.collection.add\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"collection\",\n                  packageType: PackageType.FIRESTORE,\n                  packageName: PACKAGE_NAME,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart,\n                  stopRecordingChildSpans: true,\n                },\n                (spanInfo) => {\n                  return self._handleRecordCollectionAdd(spanInfo, originalAdd, this, data);\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          return originalAdd.call(this, data);\n        }\n      };\n    };\n  }\n\n  private async _handleRecordCollectionAdd(\n    spanInfo: SpanInfo,\n    originalAdd: Function,\n    context: any,\n    data: any,\n  ): Promise<any> {\n    const docRef = await originalAdd.call(context, data);\n\n    // Capture the auto-generated document ID\n    const result = {\n      id: docRef.id,\n      path: docRef.path,\n    };\n\n    try {\n      SpanUtils.addSpanAttributes(spanInfo.span, {\n        outputValue: result,\n      });\n      SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n    } catch {\n      logger.error(`[FirestoreInstrumentation] Error updating span attributes for collection.add`);\n    }\n\n    return docRef;\n  }\n  private async _handleReplayCollectionAdd(\n    spanInfo: SpanInfo,\n    inputValue: FirestoreInputValue,\n    collectionRef: any,\n  ): Promise<any> {\n    logger.debug(`[FirestoreInstrumentation] Replaying collection.add`);\n    const mockData = await findMockResponseAsync({\n      mockRequestData: {\n        traceId: spanInfo.traceId,\n        spanId: spanInfo.spanId,\n        name: \"firestore.collection.add\",\n        inputValue: createMockInputValue(inputValue),\n        packageName: PACKAGE_NAME,\n        instrumentationName: this.INSTRUMENTATION_NAME,\n        submoduleName: \"collection\",\n        kind: SpanKind.CLIENT,\n      },\n      tuskDrift: this.tuskDrift,\n    });\n\n    if (!mockData) {\n      logger.warn(\n        `[FirestoreInstrumentation] No mock data found for collection.add: ${inputValue.path}`,\n      );\n\n      throw new Error(`[FirestoreInstrumentation] No matching mock found for collection.add`);\n    }\n\n    // Return a DocumentReference with the recorded ID\n    // Use original doc function to avoid nested instrumentation\n    const recordedId = mockData.result.id;\n    if (!this.originalCollectionDocFn) {\n      logger.error(`[FirestoreInstrumentation] Original doc function not available`);\n      return Promise.reject(new Error(\"Original doc function not available\"));\n    }\n    return this.originalCollectionDocFn.call(collectionRef, recordedId);\n  }\n\n  private _getCollectionDocPatchFn() {\n    const self = this;\n\n    return (originalDoc: Function) => {\n      return function (this: any, documentPath?: string) {\n        const collectionPath = this.path;\n\n        const inputValue: FirestoreInputValue = {\n          operation: \"collection.doc\",\n          path: collectionPath,\n          documentId: documentPath,\n        };\n\n        if (self.mode === TuskDriftMode.REPLAY) {\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              return originalDoc.call(this, \"\");\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () =>\n                  documentPath ? originalDoc.call(this, documentPath) : originalDoc.call(this),\n                {\n                  name: \"firestore.collection.doc\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"collection\",\n                  packageType: PackageType.FIRESTORE,\n                  packageName: PACKAGE_NAME,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                  stopRecordingChildSpans: true,\n                },\n                (spanInfo) => {\n                  // doc is a sync function so we need to fetch the mock syncronously\n                  // This function might throw an error if this is the frist mock requested in replay mode\n                  // and the CLI/SDK connection couldn't be awaited\n                  // This is a known limitation that is only relevant in replay mode so not the biggest deal\n                  const mockData = findMockResponseSync({\n                    mockRequestData: {\n                      traceId: spanInfo.traceId,\n                      spanId: spanInfo.spanId,\n                      name: \"firestore.collection.doc\",\n                      inputValue: createMockInputValue(inputValue),\n                      packageName: PACKAGE_NAME,\n                      instrumentationName: self.INSTRUMENTATION_NAME,\n                      submoduleName: \"collection\",\n                      kind: SpanKind.CLIENT,\n                    },\n                    tuskDrift: self.tuskDrift,\n                  });\n\n                  if (!mockData) {\n                    logger.warn(\n                      `[FirestoreInstrumentation] No mock data found for collection.doc: ${collectionPath}`,\n                    );\n                    throw new Error(\n                      `[FirestoreInstrumentation] No matching mock found for collection.doc`,\n                    );\n                  }\n\n                  // Use the recorded ID (this ensures deterministic replay)\n                  const recordedId = mockData.result.id;\n\n                  logger.debug(\n                    `[FirestoreInstrumentation] replaying doc call with recorded id: ${recordedId}`,\n                  );\n                  const docRef = originalDoc.call(this, recordedId);\n                  logger.debug(`[FirestoreInstrumentation] doc ref, id`, docRef, recordedId);\n                  return docRef;\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () =>\n              documentPath ? originalDoc.call(this, documentPath) : originalDoc.call(this),\n            recordModeHandler: ({ isPreAppStart }) => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () =>\n                  documentPath ? originalDoc.call(this, documentPath) : originalDoc.call(this),\n                {\n                  name: \"firestore.collection.doc\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"collection\",\n                  packageType: PackageType.FIRESTORE,\n                  packageName: PACKAGE_NAME,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart,\n                  stopRecordingChildSpans: true,\n                },\n                (spanInfo) => {\n                  // Record the ID (whether auto-generated or provided)\n                  const docRef = documentPath\n                    ? originalDoc.call(this, documentPath)\n                    : originalDoc.call(this);\n                  const result = {\n                    id: docRef.id,\n                    path: docRef.path,\n                  };\n                  try {\n                    SpanUtils.addSpanAttributes(spanInfo.span, {\n                      outputValue: result,\n                    });\n                    SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n                  } catch {\n                    logger.error(\n                      `[FirestoreInstrumentation] Error updating span attributes for collection.doc`,\n                    );\n                  }\n                  return docRef;\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          return documentPath ? originalDoc.call(this, documentPath) : originalDoc.call(this);\n        }\n      };\n    };\n  }\n\n  private _getQueryGetPatchFn() {\n    const self = this;\n\n    return (originalGet: Function) => {\n      return function (this: any) {\n        // Try to extract query path - queries have a _queryOptions property\n        const queryPath = this._queryOptions?.parentPath?.formattedName || \"unknown\";\n\n        const inputValue: FirestoreInputValue = {\n          operation: \"query.get\",\n          path: queryPath,\n          // Could capture query constraints here if needed\n        };\n\n        // Handle replay mode\n        if (self.mode === TuskDriftMode.REPLAY) {\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              const emptyQueryResult: FirestoreQueryResult = {\n                size: 0,\n                empty: true,\n                docs: [],\n              };\n              return new TdFirestoreQueryMock(emptyQueryResult);\n            },\n            isServerRequest: false,\n            replayModeHandler: () => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalGet.call(this),\n                {\n                  name: \"firestore.query.get\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"query\",\n                  packageType: PackageType.FIRESTORE,\n                  packageName: PACKAGE_NAME,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart: false,\n                  stopRecordingChildSpans: true,\n                },\n                (spanInfo) => {\n                  return self._handleReplayQueryGet(spanInfo, inputValue);\n                },\n              );\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          return handleRecordMode({\n            originalFunctionCall: () => originalGet.call(this),\n            recordModeHandler: ({ isPreAppStart }) => {\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalGet.call(this),\n                {\n                  name: \"firestore.query.get\",\n                  kind: SpanKind.CLIENT,\n                  submodule: \"query\",\n                  packageType: PackageType.FIRESTORE,\n                  packageName: PACKAGE_NAME,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue: inputValue,\n                  isPreAppStart,\n                  stopRecordingChildSpans: true,\n                },\n                (spanInfo) => {\n                  return self._handleRecordQueryGet(spanInfo, originalGet, this);\n                },\n              );\n            },\n            spanKind: SpanKind.CLIENT,\n          });\n        } else {\n          return originalGet.call(this);\n        }\n      };\n    };\n  }\n\n  private async _handleRecordQueryGet(\n    spanInfo: SpanInfo,\n    originalGet: Function,\n    context: any,\n  ): Promise<any> {\n    const querySnapshot = await originalGet.call(context);\n\n    // Capture query results\n    const queryResult: FirestoreQueryResult = {\n      docs: querySnapshot.docs.map((doc: any) => ({\n        id: doc.id,\n        path: doc.ref.path,\n        exists: doc.exists,\n        data: doc.exists ? doc.data() : undefined,\n        createTime: doc.createTime\n          ? { seconds: doc.createTime.seconds, nanoseconds: doc.createTime.nanoseconds }\n          : undefined,\n        updateTime: doc.updateTime\n          ? { seconds: doc.updateTime.seconds, nanoseconds: doc.updateTime.nanoseconds }\n          : undefined,\n        readTime: doc.readTime\n          ? { seconds: doc.readTime.seconds, nanoseconds: doc.readTime.nanoseconds }\n          : undefined,\n      })),\n      size: querySnapshot.size,\n      empty: querySnapshot.empty,\n      readTime: querySnapshot.readTime\n        ? {\n            seconds: querySnapshot.readTime.seconds,\n            nanoseconds: querySnapshot.readTime.nanoseconds,\n          }\n        : undefined,\n    };\n\n    try {\n      SpanUtils.addSpanAttributes(spanInfo.span, {\n        outputValue: queryResult,\n      });\n      SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n    } catch {\n      logger.error(`[FirestoreInstrumentation] Error updating span attributes for query.get`);\n    }\n\n    return querySnapshot;\n  }\n\n  private async _handleReplayQueryGet(\n    spanInfo: SpanInfo,\n    inputValue: FirestoreInputValue,\n  ): Promise<any> {\n    logger.debug(`[FirestoreInstrumentation] Replaying query.get`);\n\n    const mockData = await findMockResponseAsync({\n      mockRequestData: {\n        traceId: spanInfo.traceId,\n        spanId: spanInfo.spanId,\n        name: \"firestore.query.get\",\n        inputValue: createMockInputValue(inputValue),\n        packageName: PACKAGE_NAME,\n        instrumentationName: this.INSTRUMENTATION_NAME,\n        submoduleName: \"query\",\n        kind: SpanKind.CLIENT,\n      },\n      tuskDrift: this.tuskDrift,\n    });\n\n    if (!mockData) {\n      logger.warn(\n        `[FirestoreInstrumentation] No mock data found for query.get: ${inputValue.path}`,\n      );\n      throw new Error(`[FirestoreInstrumentation] No matching mock found for query.get`);\n    }\n\n    const queryResult = mockData.result as FirestoreQueryResult;\n    return new TdFirestoreQueryMock(queryResult);\n  }\n\n  protected _wrap<T extends (...args: any[]) => any>(\n    target: any,\n    propertyName: string,\n    wrapper: (original: T) => T,\n  ): void {\n    if (!target || typeof target[propertyName] !== \"function\") {\n      logger.warn(\n        `[FirestoreInstrumentation] Cannot wrap ${propertyName}: not a function or target is undefined`,\n      );\n      return;\n    }\n\n    const original = target[propertyName];\n    const wrapped = wrapper(original);\n    target[propertyName] = wrapped;\n  }\n}\n","import { TdInstrumentationBase } from \"../../core/baseClasses/TdInstrumentationBase\";\nimport { TdInstrumentationNodeModule } from \"../../core/baseClasses/TdInstrumentationNodeModule\";\nimport { SpanUtils, SpanInfo } from \"../../../core/tracing/SpanUtils\";\nimport { SpanKind, SpanStatusCode, context } from \"@opentelemetry/api\";\nimport { TuskDriftCore, TuskDriftMode } from \"../../../core/TuskDrift\";\nimport { HttpReplayHooks } from \"../http/HttpReplayHooks\";\nimport { DecodedType } from \"@use-tusk/drift-schemas/core/json_schema\";\nimport {\n  NextjsInstrumentationConfig,\n  NextjsServerInputValue,\n  NextjsServerOutputValue,\n  NextjsBaseServerModule,\n} from \"./types\";\nimport { wrap, handleRecordMode, handleReplayMode } from \"../../core/utils\";\nimport { shouldSample, OriginalGlobalUtils, logger } from \"../../../core/utils\";\nimport { PackageType, StatusCode } from \"@use-tusk/drift-schemas/core/span\";\nimport { EncodingType, JsonSchemaHelper } from \"../../../core/tracing/JsonSchemaHelper\";\nimport { EnvVarTracker } from \"../../core/trackers\";\nimport {\n  combineChunks,\n  httpBodyEncoder,\n  getDecodedType,\n  ACCEPTABLE_CONTENT_TYPES,\n} from \"../http/utils\";\nimport { TraceBlockingManager } from \"../../../core/tracing/TraceBlockingManager\";\nimport { IncomingMessage, ServerResponse } from \"http\";\n\nexport class NextjsInstrumentation extends TdInstrumentationBase {\n  private readonly INSTRUMENTATION_NAME = \"NextjsInstrumentation\";\n  private mode: TuskDriftMode;\n  private replayHooks: HttpReplayHooks;\n  private tuskDrift: TuskDriftCore;\n\n  constructor(config: NextjsInstrumentationConfig = {}) {\n    super(\"nextjs\", config);\n    this.mode = config.mode || TuskDriftMode.DISABLED;\n    this.replayHooks = new HttpReplayHooks();\n    this.tuskDrift = TuskDriftCore.getInstance();\n    logger.debug(`[NextjsInstrumentation] Constructor called with mode: ${this.mode}`);\n\n    // Almost always, Next.js instrumentation hook runs after Next.js server has loaded,\n    // so we need to patch existing modules in require.cache\n    this._patchLoadedModules();\n  }\n\n  init(): TdInstrumentationNodeModule[] {\n    logger.debug(`[NextjsInstrumentation] Initializing in ${this.mode} mode`);\n    return [\n      new TdInstrumentationNodeModule({\n        name: \"next/dist/server/base-server\",\n        supportedVersions: [\"*\"],\n        patch: (moduleExports) => {\n          return this._patchBaseServer(moduleExports);\n        },\n      }),\n    ];\n  }\n\n  private _patchLoadedModules(): void {\n    logger.debug(`[NextjsInstrumentation] Checking for already-loaded Next.js modules`);\n\n    // Search require.cache directly for Next.js server modules\n    const pattern = \"/next/dist/server/base-server.js\";\n\n    let patchedCount = 0;\n    for (const [modulePath, cached] of Object.entries(require.cache)) {\n      if (modulePath.includes(pattern) && cached && cached.exports) {\n        logger.debug(`[NextjsInstrumentation] Found ${pattern} at ${modulePath}, patching now`);\n        this._patchBaseServer(cached.exports);\n        patchedCount++;\n        break; // Only patch each module once\n      }\n    }\n\n    if (patchedCount === 0) {\n      logger.debug(`[NextjsInstrumentation] No Next.js server modules found in require.cache yet`);\n      logger.debug(\n        `[NextjsInstrumentation] Will wait for require-in-the-middle hooks to catch them`,\n      );\n    } else {\n      logger.debug(\n        `[NextjsInstrumentation] Patched ${patchedCount} already-loaded Next.js modules`,\n      );\n    }\n  }\n\n  private _patchBaseServer(baseServerModule: NextjsBaseServerModule): NextjsBaseServerModule {\n    logger.debug(`[NextjsInstrumentation] Patching Next.js BaseServer in ${this.mode} mode`);\n\n    // Get the BaseServer class (could be default export or named export)\n    const BaseServer = baseServerModule.default || baseServerModule.BaseServer || baseServerModule;\n\n    // Check if this specific BaseServer.prototype is already patched\n    // This prevents duplicate patching when multiple Next.js modules export the same BaseServer\n    if (BaseServer && BaseServer.prototype) {\n      if (this.isModulePatched(BaseServer.prototype)) {\n        logger.debug(`[NextjsInstrumentation] BaseServer.prototype already patched, skipping`);\n        return baseServerModule;\n      }\n\n      if (BaseServer.prototype.handleRequest) {\n        this._wrap(BaseServer.prototype, \"handleRequest\", this._getHandleRequestPatchFn());\n        logger.debug(`[NextjsInstrumentation] Wrapped BaseServer.prototype.handleRequest`);\n        this.markModuleAsPatched(BaseServer.prototype);\n      } else {\n        logger.warn(`[NextjsInstrumentation] Could not find BaseServer.prototype.handleRequest`);\n      }\n    } else {\n      logger.warn(`[NextjsInstrumentation] Could not find BaseServer class`);\n    }\n\n    logger.debug(`[NextjsInstrumentation] Next.js BaseServer patching complete`);\n    return baseServerModule;\n  }\n\n  private _getHandleRequestPatchFn() {\n    const self = this;\n\n    return (originalHandleRequest: Function) => {\n      return async function (\n        this: any,\n        req: IncomingMessage,\n        res: ServerResponse,\n        parsedUrl?: any,\n      ) {\n        // Sample as soon as we can to avoid additional overhead if this request is not sampled\n        if (self.mode === TuskDriftMode.RECORD) {\n          if (\n            !shouldSample({\n              samplingRate: self.tuskDrift.getSamplingRate(),\n              isAppReady: self.tuskDrift.isAppReady(),\n            })\n          ) {\n            return originalHandleRequest.call(this, req, res, parsedUrl);\n          }\n        }\n\n        const method = req.method || \"GET\";\n        const url = req.url || \"/\";\n\n        logger.debug(`[NextjsInstrumentation] Intercepted Next.js request: ${method} ${url}`);\n\n        // Handle replay mode using replay hooks (pass through pattern)\n        if (self.mode === TuskDriftMode.REPLAY) {\n          return handleReplayMode({\n            noOpRequestHandler: () => {\n              throw new Error(\n                `[NextjsInstrumentation] Should never call noOpRequestHandler for server requests ${method} ${url}`,\n              );\n            },\n            isServerRequest: true,\n            replayModeHandler: () => {\n              // Build input value object for server request in replay mode\n              const inputValue: NextjsServerInputValue = {\n                method,\n                url,\n                target: url,\n                headers: self._normalizeHeaders(req.headers || {}),\n              };\n\n              // Set replay trace context\n              const replayTraceId = self.replayHooks.extractTraceIdFromHeaders(req);\n              if (!replayTraceId) {\n                // No trace context; proceed without span\n                logger.debug(`[NextjsInstrumentation] No trace ID found, calling original handler`);\n                return originalHandleRequest.call(this, req, res, parsedUrl);\n              }\n\n              logger.debug(`[NextjsInstrumentation] Setting replay trace id`, replayTraceId);\n\n              // Fetch env vars from CLI if requested\n              const shouldFetch = self.replayHooks.extractShouldFetchEnvVars(req);\n              if (shouldFetch) {\n                try {\n                  const envVars = self.tuskDrift.requestEnvVarsSync(replayTraceId);\n                  EnvVarTracker.setEnvVars(replayTraceId, envVars);\n                  logger.debug(\n                    `[NextjsInstrumentation] Fetched env vars from CLI for trace ${replayTraceId}`,\n                  );\n                } catch (error) {\n                  logger.error(`[NextjsInstrumentation] Failed to fetch env vars from CLI:`, error);\n                }\n              }\n\n              const ctxWithReplayTraceId = SpanUtils.setCurrentReplayTraceId(replayTraceId);\n\n              if (!ctxWithReplayTraceId) {\n                throw new Error(\"Error setting current replay trace id\");\n              }\n\n              return context.with(ctxWithReplayTraceId, () => {\n                return SpanUtils.createAndExecuteSpan(\n                  self.mode,\n                  () => originalHandleRequest.call(this, req, res, parsedUrl),\n                  {\n                    name: url,\n                    kind: SpanKind.SERVER,\n                    packageName: \"nextjs\",\n                    submodule: method,\n                    packageType: PackageType.HTTP,\n                    instrumentationName: self.INSTRUMENTATION_NAME,\n                    inputValue,\n                    inputSchemaMerges: {\n                      headers: {\n                        matchImportance: 0,\n                      },\n                    },\n                    isPreAppStart: false,\n                  },\n                  (spanInfo) => {\n                    // Pass through to Next.js handler and capture response\n                    return self._handleNextjsRequestInSpan({\n                      req,\n                      res,\n                      parsedUrl,\n                      originalHandleRequest,\n                      spanInfo,\n                      inputValue,\n                      thisContext: this,\n                    });\n                  },\n                );\n              });\n            },\n          });\n        } else if (self.mode === TuskDriftMode.RECORD) {\n          // Skip CORS preflight in RECORD mode (don't create a span)\n          if (\n            method.toUpperCase() === \"OPTIONS\" ||\n            !!req.headers[\"access-control-request-method\"]\n          ) {\n            return originalHandleRequest.call(this, req, res, parsedUrl);\n          }\n\n          logger.debug(`[NextjsInstrumentation] Creating server span for ${method} ${url}`);\n          return handleRecordMode({\n            originalFunctionCall: () => originalHandleRequest.call(this, req, res, parsedUrl),\n            recordModeHandler: ({ isPreAppStart }: { isPreAppStart: boolean }) => {\n              const inputValue: NextjsServerInputValue = {\n                method,\n                url,\n                target: url,\n                headers: self._normalizeHeaders(req.headers || {}),\n              };\n\n              return SpanUtils.createAndExecuteSpan(\n                self.mode,\n                () => originalHandleRequest.call(this, req, res, parsedUrl),\n                {\n                  name: url,\n                  kind: SpanKind.SERVER,\n                  packageName: \"nextjs\",\n                  packageType: PackageType.HTTP,\n                  submodule: method,\n                  instrumentationName: self.INSTRUMENTATION_NAME,\n                  inputValue,\n                  inputSchemaMerges: {\n                    headers: {\n                      matchImportance: 0,\n                    },\n                  },\n                  isPreAppStart,\n                },\n                (spanInfo) => {\n                  return self._handleNextjsRequestInSpan({\n                    req,\n                    res,\n                    parsedUrl,\n                    originalHandleRequest,\n                    spanInfo,\n                    inputValue,\n                    thisContext: this,\n                  });\n                },\n              );\n            },\n            spanKind: SpanKind.SERVER,\n          });\n        } else {\n          // Should never happen since we're only patching record and replay modes\n          return originalHandleRequest.call(this, req, res, parsedUrl);\n        }\n      };\n    };\n  }\n\n  private async _handleNextjsRequestInSpan({\n    req,\n    res,\n    parsedUrl,\n    originalHandleRequest,\n    spanInfo,\n    inputValue,\n    thisContext,\n  }: {\n    req: IncomingMessage;\n    res: ServerResponse;\n    parsedUrl: any;\n    originalHandleRequest: Function;\n    spanInfo: SpanInfo;\n    inputValue: NextjsServerInputValue;\n    thisContext: any;\n  }) {\n    const self = this;\n\n    // Bind context to request/response objects\n    context.bind(spanInfo.context, req);\n    context.bind(spanInfo.context, res);\n\n    // Track the complete input value (will be updated when body is captured)\n    let completeInputValue: NextjsServerInputValue = inputValue;\n\n    // Capture request body if it exists\n    this._captureRequestBody(req, spanInfo, inputValue, (updatedInputValue) => {\n      completeInputValue = updatedInputValue;\n    });\n\n    // Store original statusCode\n    let capturedStatusCode: number | undefined;\n    let capturedStatusMessage: string | undefined;\n    let capturedHeaders: Record<string, string> = {};\n    const responseChunks: (string | Buffer)[] = [];\n\n    // Next.js wraps the response object, so we need to access the underlying Node.js response\n    const actualRes = (res as any).originalResponse || res;\n\n    // Patch res.writeHead to capture status and headers\n    const originalWriteHead = actualRes.writeHead?.bind(actualRes);\n    if (originalWriteHead) {\n      actualRes.writeHead = function (statusCode: number, statusMessage?: any, headers?: any) {\n        capturedStatusCode = statusCode;\n\n        // Handle both signatures: writeHead(status, headers) and writeHead(status, message, headers)\n        if (typeof statusMessage === \"object\") {\n          capturedHeaders = self._normalizeHeaders(statusMessage);\n        } else {\n          capturedStatusMessage = statusMessage;\n          if (headers) {\n            capturedHeaders = self._normalizeHeaders(headers);\n          }\n        }\n\n        return originalWriteHead.call(this, statusCode, statusMessage, headers);\n      };\n    }\n\n    // Patch res.setHeader to capture headers\n    const originalSetHeader = actualRes.setHeader?.bind(actualRes);\n    if (originalSetHeader) {\n      actualRes.setHeader = function (name: string, value: string | string[]) {\n        capturedHeaders[name.toLowerCase()] = Array.isArray(value) ? value.join(\", \") : value;\n        return originalSetHeader.call(this, name, value);\n      };\n    }\n\n    // Patch res.write to capture body chunks\n    const originalWrite = actualRes.write?.bind(actualRes);\n    if (originalWrite) {\n      actualRes.write = function (chunk: string | Buffer, encoding?: any, callback?: any) {\n        if (chunk) {\n          responseChunks.push(chunk);\n        }\n        return originalWrite.call(this, chunk, encoding, callback);\n      };\n    }\n\n    // Patch res.end to capture final body chunk\n    const originalEnd = actualRes.end?.bind(actualRes);\n    if (originalEnd) {\n      actualRes.end = function (chunk?: any, encoding?: any, callback?: any) {\n        if (chunk) {\n          responseChunks.push(chunk);\n        }\n        return originalEnd.call(this, chunk, encoding, callback);\n      };\n    }\n\n    try {\n      // Call original Next.js handler (pass through)\n      await originalHandleRequest.call(thisContext, req, res, parsedUrl);\n    } catch (error) {\n      logger.error(\n        `[NextjsInstrumentation] Error in Next.js request: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n      );\n      try {\n        SpanUtils.endSpan(spanInfo.span, {\n          code: SpanStatusCode.ERROR,\n          message: error instanceof Error ? error.message : \"Unknown error\",\n        });\n      } catch (e) {\n        logger.error(`[NextjsInstrumentation] Error ending span:`, e);\n      }\n      throw error;\n    }\n\n    try {\n      // Capture final status code if not already captured\n      if (!capturedStatusCode) {\n        capturedStatusCode = res.statusCode;\n        capturedStatusMessage = res.statusMessage;\n      }\n\n      // Get final headers if not already captured\n      if (Object.keys(capturedHeaders).length === 0 && res.getHeaders) {\n        const rawHeaders = res.getHeaders() as Record<string, string | string[]>;\n        capturedHeaders = self._normalizeHeaders(rawHeaders);\n      }\n\n      logger.debug(\n        `[NextjsInstrumentation] Next.js request completed: ${capturedStatusCode} (${SpanUtils.getTraceInfo()})`,\n      );\n\n      // Build output value\n      const outputValue: NextjsServerOutputValue = {\n        statusCode: capturedStatusCode,\n        statusMessage: capturedStatusMessage,\n        headers: capturedHeaders,\n      };\n\n      // Process response body if we have chunks\n      if (responseChunks.length > 0) {\n        try {\n          const responseBuffer = combineChunks(responseChunks);\n          const contentEncoding = outputValue.headers?.[\"content-encoding\"];\n\n          const encodedBody = await httpBodyEncoder({\n            bodyBuffer: responseBuffer,\n            contentEncoding,\n          });\n\n          // Store parsed body data\n          outputValue.body = encodedBody;\n          outputValue.bodySize = responseBuffer.length;\n        } catch (error) {\n          logger.error(`[NextjsInstrumentation] Error processing response body:`, error);\n        }\n      }\n\n      // Add span attributes (use completeInputValue which includes request body)\n      SpanUtils.addSpanAttributes(spanInfo.span, {\n        inputValue: completeInputValue,\n        outputValue,\n        outputSchemaMerges: {\n          body: {\n            encoding: EncodingType.BASE64,\n            decodedType: getDecodedType(outputValue.headers?.[\"content-type\"] || \"\"),\n          },\n          headers: {\n            matchImportance: 0,\n          },\n        },\n        metadata: {\n          ENV_VARS: EnvVarTracker.getEnvVars(spanInfo.traceId),\n        },\n      });\n\n      // Clear env vars\n      EnvVarTracker.clearEnvVars(spanInfo.traceId);\n\n      const status =\n        (capturedStatusCode || 200) >= 400\n          ? { code: SpanStatusCode.ERROR, message: `HTTP ${capturedStatusCode}` }\n          : { code: SpanStatusCode.OK };\n\n      SpanUtils.setStatus(spanInfo.span, status);\n\n      // Ignore static asset responses\n      // Must check this before ending the span\n      const decodedType = getDecodedType(outputValue.headers?.[\"content-type\"] || \"\");\n      if (decodedType && !ACCEPTABLE_CONTENT_TYPES.has(decodedType)) {\n        const traceBlockingManager = TraceBlockingManager.getInstance();\n        traceBlockingManager.blockTrace(spanInfo.traceId);\n        logger.debug(\n          `[NextjsInstrumentation] Blocking trace ${spanInfo.traceId} because it is not an acceptable decoded type: ${decodedType}`,\n          { acceptableContentTypes: Array.from(ACCEPTABLE_CONTENT_TYPES) },\n        );\n      }\n\n      SpanUtils.endSpan(spanInfo.span);\n\n      // In REPLAY mode, send inbound span to CLI\n      if (self.mode === TuskDriftMode.REPLAY) {\n        try {\n          const now = OriginalGlobalUtils.getOriginalDate();\n          const replayTraceId = SpanUtils.getCurrentReplayTraceId() || spanInfo.traceId;\n\n          // Compute schemas and hashes (use completeInputValue which includes request body)\n          const { schema: inputSchema, decodedValueHash: inputValueHash } =\n            JsonSchemaHelper.generateSchemaAndHash(completeInputValue, {\n              body: {\n                encoding: EncodingType.BASE64,\n                decodedType: getDecodedType(\n                  (completeInputValue.headers && completeInputValue.headers[\"content-type\"]) || \"\",\n                ),\n              },\n              headers: {\n                matchImportance: 0,\n              },\n            });\n\n          const { schema: outputSchema, decodedValueHash: outputValueHash } =\n            JsonSchemaHelper.generateSchemaAndHash(outputValue, {\n              body: {\n                encoding: EncodingType.BASE64,\n                decodedType: getDecodedType(outputValue.headers[\"content-type\"] || \"\"),\n              },\n              headers: {\n                matchImportance: 0,\n              },\n            });\n\n          const cleanSpan = {\n            traceId: replayTraceId,\n            spanId: spanInfo.spanId,\n            parentSpanId: \"\",\n            name: completeInputValue.url,\n            packageName: \"nextjs\",\n            instrumentationName: self.INSTRUMENTATION_NAME,\n            submoduleName: completeInputValue.method,\n            inputValue: completeInputValue,\n            outputValue,\n            inputSchema,\n            outputSchema,\n            inputSchemaHash: JsonSchemaHelper.generateDeterministicHash(inputSchema),\n            outputSchemaHash: JsonSchemaHelper.generateDeterministicHash(outputSchema),\n            inputValueHash,\n            outputValueHash,\n            kind: SpanKind.SERVER,\n            packageType: PackageType.HTTP,\n            status: {\n              code: (capturedStatusCode || 200) >= 400 ? StatusCode.ERROR : StatusCode.OK,\n              message: (capturedStatusCode || 200) >= 400 ? `HTTP ${capturedStatusCode}` : \"\",\n            },\n            timestamp: {\n              seconds: Math.floor(now.getTime() / 1000),\n              nanos: (now.getTime() % 1000) * 1_000_000,\n            },\n            duration: { seconds: 0, nanos: 0 },\n            isRootSpan: true,\n            isPreAppStart: false,\n            metadata: undefined,\n          };\n\n          await self.tuskDrift.sendInboundSpanForReplay(cleanSpan);\n        } catch (e) {\n          logger.error(\"[NextjsInstrumentation] Failed to build/send inbound replay span:\", e);\n        }\n      }\n    } catch (error) {\n      logger.error(\n        `[NextjsInstrumentation] Error in Next.js request: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n      );\n      try {\n        SpanUtils.endSpan(spanInfo.span, {\n          code: SpanStatusCode.ERROR,\n          message: error instanceof Error ? error.message : \"Unknown error\",\n        });\n      } catch (e) {\n        logger.error(`[NextjsInstrumentation] Error ending span:`, e);\n      }\n    }\n  }\n\n  /**\n   * Captures the request body from an IncomingMessage stream by patching req.read() and listening for data events.\n   * Similar to HTTP instrumentation's request body capture, but adapted for Next.js.\n   */\n  private _captureRequestBody(\n    req: any,\n    spanInfo: SpanInfo,\n    inputValue: NextjsServerInputValue,\n    onBodyCaptured?: (updatedInputValue: NextjsServerInputValue) => void,\n  ): void {\n    // Next.js wraps the request object, so we need to access the underlying Node.js request\n    // Try multiple possible locations for the actual IncomingMessage\n    const actualReq = req.originalRequest || req._req || req;\n\n    const requestBodyChunks: Buffer[] = [];\n    let streamConsumptionMode: \"NOT_CONSUMING\" | \"READ\" | \"PIPE\" = \"NOT_CONSUMING\";\n\n    // Patch req.read to capture body chunks when application calls read()\n    const originalRead = actualReq.read?.bind(actualReq);\n    if (originalRead) {\n      actualReq.read = function read(size?: number) {\n        const chunk = originalRead(size);\n        if (\n          chunk &&\n          (streamConsumptionMode === \"READ\" || streamConsumptionMode === \"NOT_CONSUMING\")\n        ) {\n          streamConsumptionMode = \"READ\";\n          requestBodyChunks.push(Buffer.from(chunk));\n        }\n        return chunk;\n      };\n    }\n\n    // Check if actualReq has event emitter methods\n    if (typeof actualReq.once !== \"function\" || typeof actualReq.addListener !== \"function\") {\n      logger.debug(\n        `[NextjsInstrumentation] Request object doesn't have event emitter methods, skipping body capture`,\n      );\n      return;\n    }\n\n    // Listen for 'resume' event to know when streaming starts\n    actualReq.once(\"resume\", () => {\n      actualReq.addListener(\"data\", (chunk: string | Buffer) => {\n        if (\n          chunk &&\n          (streamConsumptionMode === \"PIPE\" || streamConsumptionMode === \"NOT_CONSUMING\")\n        ) {\n          streamConsumptionMode = \"PIPE\";\n          requestBodyChunks.push(Buffer.from(chunk));\n        }\n      });\n    });\n\n    // Process the complete body when the request ends\n    actualReq.addListener(\"end\", async (chunk?: string | Buffer) => {\n      if (chunk) {\n        requestBodyChunks.push(Buffer.from(chunk));\n      }\n\n      if (requestBodyChunks.length > 0) {\n        try {\n          const bodyBuffer = Buffer.concat(requestBodyChunks);\n\n          // Parse the request body using existing body parser\n          const encodedBody = await httpBodyEncoder({\n            bodyBuffer,\n            contentEncoding: actualReq.headers[\"content-encoding\"] as string,\n          });\n\n          // Update input value with parsed body\n          const updatedInputValue: NextjsServerInputValue = {\n            ...inputValue,\n            body: encodedBody,\n            bodySize: bodyBuffer.length,\n          };\n\n          if (onBodyCaptured) {\n            onBodyCaptured(updatedInputValue);\n          }\n\n          // Update the span with the complete request body information\n          SpanUtils.addSpanAttributes(spanInfo.span, {\n            inputValue: updatedInputValue,\n            inputSchemaMerges: {\n              body: {\n                encoding: EncodingType.BASE64,\n                decodedType: getDecodedType(actualReq.headers[\"content-type\"] || \"\"),\n              },\n              headers: {\n                matchImportance: 0,\n              },\n            },\n          });\n\n          logger.debug(\n            `[NextjsInstrumentation] Captured request body for ${actualReq.method} ${actualReq.url}: ${bodyBuffer.length} bytes`,\n          );\n        } catch (error) {\n          logger.error(`[NextjsInstrumentation] Error processing request body:`, error);\n        }\n      }\n    });\n  }\n\n  private _normalizeHeaders(\n    headers: Record<string, string | string[] | undefined>,\n  ): Record<string, string> {\n    const normalized: Record<string, string> = {};\n    for (const [key, value] of Object.entries(headers)) {\n      if (value !== undefined) {\n        normalized[key.toLowerCase()] = Array.isArray(value) ? value.join(\", \") : String(value);\n      }\n    }\n    return normalized;\n  }\n\n  private _wrap(\n    target: any,\n    propertyName: string,\n    wrapper: (original: Function) => Function,\n  ): void {\n    wrap(target, propertyName, wrapper);\n  }\n}\n","import { TdInstrumentationConfig } from \"../../core/baseClasses/TdInstrumentationAbstract\";\nimport { TuskDriftMode } from \"../../../core/TuskDrift\";\n\nexport interface PrismaInstrumentationConfig extends TdInstrumentationConfig {\n  requestHook?: (operation: any) => void;\n  responseHook?: (result: any) => void;\n  mode?: TuskDriftMode;\n}\n\nexport interface PrismaInputValue {\n  model: string;\n  operation: string;\n  args: any;\n  [key: string]: unknown;\n}\n\nexport interface PrismaOutputValue {\n  prismaResult: any;\n  _tdOriginalFormat?: \"result\" | \"error\";\n  [key: string]: unknown;\n}\n\nexport interface PrismaModuleExports {\n  PrismaClient?: any;\n  default?: any;\n  [key: string]: any;\n}\n\n/**\n * Prisma error class names for proper error handling\n */\nexport enum PrismaErrorClassName {\n  PrismaClientKnownRequestError = \"PrismaClientKnownRequestError\",\n  PrismaClientUnknownRequestError = \"PrismaClientUnknownRequestError\",\n  PrismaClientInitializationError = \"PrismaClientInitializationError\",\n  PrismaClientValidationError = \"PrismaClientValidationError\",\n  PrismaClientRustPanicError = \"PrismaClientRustPanicError\",\n  NotFoundError = \"NotFoundError\",\n}\n\nexport interface PrismaErrorWithClassName extends Error {\n  customTdName?: PrismaErrorClassName;\n  [key: string]: any;\n}\n","import { TdInstrumentationBase } from \"../../core/baseClasses/TdInstrumentationBase\";\nimport { TdInstrumentationNodeModule } from \"../../core/baseClasses/TdInstrumentationNodeModule\";\nimport { SpanUtils, SpanInfo } from \"../../../core/tracing/SpanUtils\";\nimport { SpanKind, SpanStatusCode } from \"@opentelemetry/api\";\nimport { TuskDriftCore, TuskDriftMode } from \"../../../core/TuskDrift\";\nimport { captureStackTrace, wrap } from \"../../core/utils\";\nimport { findMockResponseAsync } from \"../../core/utils/mockResponseUtils\";\nimport { handleRecordMode, handleReplayMode } from \"../../core/utils/modeUtils\";\nimport {\n  PrismaModuleExports,\n  PrismaInputValue,\n  PrismaInstrumentationConfig,\n  PrismaErrorClassName,\n  PrismaErrorWithClassName,\n  PrismaOutputValue,\n} from \"./types\";\nimport { PackageType } from \"@use-tusk/drift-schemas/core/span\";\nimport { logger } from \"../../../core/utils\";\n\ninterface PrismaErrorClassInfo {\n  name: PrismaErrorClassName;\n  errorClass: any;\n}\n\nexport class PrismaInstrumentation extends TdInstrumentationBase {\n  private readonly INSTRUMENTATION_NAME = \"PrismaInstrumentation\";\n  private mode: TuskDriftMode;\n  private tuskDrift: TuskDriftCore;\n  private prismaErrorClasses: PrismaErrorClassInfo[] = [];\n\n  constructor(config: PrismaInstrumentationConfig = {}) {\n    super(\"@prisma/client\", config);\n    this.mode = config.mode || TuskDriftMode.DISABLED;\n    this.tuskDrift = TuskDriftCore.getInstance();\n  }\n\n  init(): TdInstrumentationNodeModule[] {\n    return [\n      new TdInstrumentationNodeModule({\n        name: \"@prisma/client\",\n        supportedVersions: [\"5.*\", \"6.*\"],\n        patch: (moduleExports: PrismaModuleExports) => this._patchPrismaModule(moduleExports),\n      }),\n    ];\n  }\n\n  private _patchPrismaModule(prismaModule: PrismaModuleExports): PrismaModuleExports {\n    if (this.isModulePatched(prismaModule)) {\n      logger.debug(`[PrismaInstrumentation] Prisma module already patched, skipping`);\n      return prismaModule;\n    }\n\n    // Store Prisma error classes for later use\n    this._storePrismaErrorClasses(prismaModule);\n\n    // Wrap the PrismaClient constructor\n    logger.debug(`[PrismaInstrumentation] Wrapping PrismaClient constructor`);\n    this._wrap(prismaModule, \"PrismaClient\", (OriginalPrismaClient: any) => {\n      const self = this;\n      logger.debug(`[PrismaInstrumentation] PrismaClient wrapper called`);\n\n      return class TdPrismaClient {\n        constructor(...args: any[]) {\n          logger.debug(`[PrismaInstrumentation] Creating patched PrismaClient instance`);\n\n          // Create the original Prisma client\n          const prismaClient = new OriginalPrismaClient(...args);\n\n          // Extend the client with our instrumentation\n          const extendedClient = prismaClient.$extends({\n            query: {\n              async $allOperations({ model, operation, args: operationArgs, query }: any) {\n                logger.debug(\n                  `[PrismaInstrumentation] $allOperations intercepted: ${model}.${operation}`,\n                );\n                return self._handlePrismaOperation({\n                  model,\n                  operation,\n                  args: operationArgs,\n                  query,\n                });\n              },\n            },\n          });\n\n          return extendedClient;\n        }\n      };\n    });\n\n    this.markModuleAsPatched(prismaModule);\n    logger.debug(`[PrismaInstrumentation] Prisma module patching complete`);\n\n    return prismaModule;\n  }\n\n  private _storePrismaErrorClasses(moduleExports: PrismaModuleExports): void {\n    // In ESM, error classes are in moduleExports.Prisma.*\n    // In CJS, error classes are directly on moduleExports.*\n    const prismaNamespace = moduleExports.Prisma || {};\n\n    this.prismaErrorClasses = [\n      {\n        name: PrismaErrorClassName.PrismaClientKnownRequestError,\n        errorClass:\n          moduleExports.PrismaClientKnownRequestError ||\n          prismaNamespace.PrismaClientKnownRequestError,\n      },\n      {\n        name: PrismaErrorClassName.PrismaClientUnknownRequestError,\n        errorClass:\n          moduleExports.PrismaClientUnknownRequestError ||\n          prismaNamespace.PrismaClientUnknownRequestError,\n      },\n      {\n        name: PrismaErrorClassName.PrismaClientInitializationError,\n        errorClass:\n          moduleExports.PrismaClientInitializationError ||\n          prismaNamespace.PrismaClientInitializationError,\n      },\n      {\n        name: PrismaErrorClassName.PrismaClientValidationError,\n        errorClass:\n          moduleExports.PrismaClientValidationError || prismaNamespace.PrismaClientValidationError,\n      },\n      {\n        name: PrismaErrorClassName.PrismaClientRustPanicError,\n        errorClass:\n          moduleExports.PrismaClientRustPanicError || prismaNamespace.PrismaClientRustPanicError,\n      },\n      {\n        name: PrismaErrorClassName.NotFoundError,\n        errorClass: moduleExports.NotFoundError || prismaNamespace.NotFoundError,\n      },\n    ];\n  }\n\n  private _handlePrismaOperation({\n    model,\n    operation,\n    args,\n    query,\n  }: {\n    model: string;\n    operation: string;\n    args: any;\n    query: (args: any) => Promise<any>;\n  }): Promise<any> {\n    const inputValue: PrismaInputValue = {\n      model,\n      operation,\n      args,\n    };\n\n    logger.debug(\n      `[PrismaInstrumentation] Intercepted Prisma operation: ${model}.${operation} in ${this.mode} mode`,\n    );\n\n    if (this.mode === TuskDriftMode.RECORD) {\n      return handleRecordMode({\n        originalFunctionCall: () => query(args),\n        recordModeHandler: ({ isPreAppStart }) => {\n          return SpanUtils.createAndExecuteSpan(\n            this.mode,\n            () => query(args),\n            {\n              name: `prisma.${operation}`,\n              kind: SpanKind.CLIENT,\n              submodule: model,\n              packageType: PackageType.PRISMA,\n              packageName: \"@prisma/client\",\n              instrumentationName: this.INSTRUMENTATION_NAME,\n              inputValue,\n              isPreAppStart,\n            },\n            (spanInfo) => {\n              return this._handleRecordPrismaOperation(spanInfo, query, args);\n            },\n          );\n        },\n        spanKind: SpanKind.CLIENT,\n      });\n    } else if (this.mode === TuskDriftMode.REPLAY) {\n      const stackTrace = captureStackTrace([\"PrismaInstrumentation\"]);\n\n      return handleReplayMode({\n        noOpRequestHandler: () => query(args),\n        isServerRequest: false,\n        replayModeHandler: () => {\n          return SpanUtils.createAndExecuteSpan(\n            this.mode,\n            () => query(args),\n            {\n              name: `prisma.${operation}`,\n              kind: SpanKind.CLIENT,\n              submodule: model,\n              packageType: PackageType.PRISMA,\n              packageName: \"@prisma/client\",\n              instrumentationName: this.INSTRUMENTATION_NAME,\n              inputValue,\n              isPreAppStart: false,\n            },\n            (spanInfo) => {\n              return this._handleReplayPrismaOperation(spanInfo, inputValue, stackTrace);\n            },\n          );\n        },\n      });\n    } else {\n      // DISABLED mode - just pass through\n      return query(args);\n    }\n  }\n\n  private async _handleRecordPrismaOperation(\n    spanInfo: SpanInfo,\n    query: (args: any) => Promise<any>,\n    args: any,\n  ): Promise<any> {\n    try {\n      logger.debug(`[PrismaInstrumentation] Recording Prisma operation`);\n\n      // Execute the real Prisma query\n      const result = await query(args);\n\n      // Store the result in the span\n      const outputValue: PrismaOutputValue = {\n        prismaResult: result,\n        _tdOriginalFormat: \"result\",\n      };\n\n      try {\n        SpanUtils.addSpanAttributes(spanInfo.span, {\n          outputValue,\n        });\n        SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n      } catch (spanError) {\n        logger.error(`[PrismaInstrumentation] error adding span attributes:`, spanError);\n      }\n\n      return result;\n    } catch (error: any) {\n      logger.debug(`[PrismaInstrumentation] Prisma operation error: ${error.message}`);\n\n      try {\n        // Identify the Prisma error class\n        const errorClassName = this._getPrismaErrorClassName(error);\n\n        // Create a serializable error object\n        const errorWithClassName: PrismaErrorWithClassName = this._cloneError(error);\n        if (errorClassName) {\n          errorWithClassName.customTdName = errorClassName;\n        }\n\n        // Store the error in the span\n        const outputValue: PrismaOutputValue = {\n          prismaResult: errorWithClassName,\n          _tdOriginalFormat: \"error\",\n        };\n\n        SpanUtils.addSpanAttributes(spanInfo.span, {\n          outputValue,\n        });\n        SpanUtils.endSpan(spanInfo.span, {\n          code: SpanStatusCode.ERROR,\n          message: error.message,\n        });\n      } catch (spanError) {\n        logger.error(\n          `[PrismaInstrumentation] error extracting error and adding span attributes:`,\n          spanError,\n        );\n      }\n\n      // Re-throw the original error\n      throw error;\n    }\n  }\n\n  private async _handleReplayPrismaOperation(\n    spanInfo: SpanInfo,\n    inputValue: PrismaInputValue,\n    stackTrace?: string,\n  ): Promise<any> {\n    const mockData = await findMockResponseAsync({\n      mockRequestData: {\n        traceId: spanInfo.traceId,\n        spanId: spanInfo.spanId,\n        name: `prisma.${inputValue.operation}`,\n        inputValue,\n        packageName: \"@prisma/client\",\n        instrumentationName: this.INSTRUMENTATION_NAME,\n        submoduleName: inputValue.model,\n        kind: SpanKind.CLIENT,\n        stackTrace,\n      },\n      tuskDrift: this.tuskDrift,\n    });\n\n    if (!mockData) {\n      logger.warn(\n        `[PrismaInstrumentation] No mock data found for Prisma operation: ${inputValue.model}.${inputValue.operation}`,\n      );\n      throw new Error(\n        `[PrismaInstrumentation] No matching mock found for Prisma operation: ${inputValue.model}.${inputValue.operation}`,\n      );\n    }\n\n    logger.debug(\n      `[PrismaInstrumentation] Found mock data for Prisma operation: ${inputValue.model}.${inputValue.operation}`,\n    );\n\n    const outputValue = mockData.result as PrismaOutputValue;\n\n    // Check if this is an error replay\n    if (outputValue._tdOriginalFormat === \"error\") {\n      const errorObj = outputValue.prismaResult as PrismaErrorWithClassName;\n\n      // Restore the correct Prisma error class prototype\n      if (errorObj.customTdName) {\n        const errorClass = this._getPrismaErrorClassFromName(errorObj.customTdName);\n        if (errorClass) {\n          Object.setPrototypeOf(errorObj, errorClass.prototype);\n        }\n      }\n\n      SpanUtils.endSpan(spanInfo.span, {\n        code: SpanStatusCode.ERROR,\n        message: errorObj.message || \"Prisma error\",\n      });\n\n      throw errorObj;\n    }\n\n    // Return the successful result\n    SpanUtils.endSpan(spanInfo.span, { code: SpanStatusCode.OK });\n    return outputValue.prismaResult;\n  }\n\n  private _getPrismaErrorClassName(error: any): PrismaErrorClassName | undefined {\n    for (const errorInfo of this.prismaErrorClasses) {\n      if (error instanceof errorInfo.errorClass) {\n        return errorInfo.name;\n      }\n    }\n    return undefined;\n  }\n\n  private _getPrismaErrorClassFromName(className: PrismaErrorClassName): any {\n    for (const errorInfo of this.prismaErrorClasses) {\n      if (errorInfo.name === className) {\n        return errorInfo.errorClass;\n      }\n    }\n    return null;\n  }\n\n  /**\n   * Deep clone an error object to make it serializable\n   */\n  private _cloneError(error: any): PrismaErrorWithClassName {\n    const cloned: PrismaErrorWithClassName = new Error(error.message) as PrismaErrorWithClassName;\n    cloned.name = error.name;\n    cloned.stack = error.stack;\n\n    // Copy all enumerable properties\n    for (const key in error) {\n      if (error.hasOwnProperty(key)) {\n        try {\n          cloned[key] = error[key];\n        } catch (e) {\n          // Skip properties that can't be copied\n        }\n      }\n    }\n\n    return cloned;\n  }\n\n  private _wrap(target: any, propertyName: string, wrapper: (original: any) => any): void {\n    wrap(target, propertyName, wrapper);\n  }\n}\n","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isTracingSuppressed = exports.unsuppressTracing = exports.suppressTracing = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst SUPPRESS_TRACING_KEY = (0, api_1.createContextKey)('OpenTelemetry SDK Context Key SUPPRESS_TRACING');\nfunction suppressTracing(context) {\n    return context.setValue(SUPPRESS_TRACING_KEY, true);\n}\nexports.suppressTracing = suppressTracing;\nfunction unsuppressTracing(context) {\n    return context.deleteValue(SUPPRESS_TRACING_KEY);\n}\nexports.unsuppressTracing = unsuppressTracing;\nfunction isTracingSuppressed(context) {\n    return context.getValue(SUPPRESS_TRACING_KEY) === true;\n}\nexports.isTracingSuppressed = isTracingSuppressed;\n//# sourceMappingURL=suppress-tracing.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BAGGAGE_MAX_TOTAL_LENGTH = exports.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = exports.BAGGAGE_MAX_NAME_VALUE_PAIRS = exports.BAGGAGE_HEADER = exports.BAGGAGE_ITEMS_SEPARATOR = exports.BAGGAGE_PROPERTIES_SEPARATOR = exports.BAGGAGE_KEY_PAIR_SEPARATOR = void 0;\nexports.BAGGAGE_KEY_PAIR_SEPARATOR = '=';\nexports.BAGGAGE_PROPERTIES_SEPARATOR = ';';\nexports.BAGGAGE_ITEMS_SEPARATOR = ',';\n// Name of the http header used to propagate the baggage\nexports.BAGGAGE_HEADER = 'baggage';\n// Maximum number of name-value pairs allowed by w3c spec\nexports.BAGGAGE_MAX_NAME_VALUE_PAIRS = 180;\n// Maximum number of bytes per a single name-value pair allowed by w3c spec\nexports.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096;\n// Maximum total length of all name-value pairs allowed by w3c spec\nexports.BAGGAGE_MAX_TOTAL_LENGTH = 8192;\n//# sourceMappingURL=constants.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseKeyPairsIntoRecord = exports.parsePairKeyValue = exports.getKeyPairs = exports.serializeKeyPairs = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst api_1 = require(\"@opentelemetry/api\");\nconst constants_1 = require(\"./constants\");\nfunction serializeKeyPairs(keyPairs) {\n    return keyPairs.reduce((hValue, current) => {\n        const value = `${hValue}${hValue !== '' ? constants_1.BAGGAGE_ITEMS_SEPARATOR : ''}${current}`;\n        return value.length > constants_1.BAGGAGE_MAX_TOTAL_LENGTH ? hValue : value;\n    }, '');\n}\nexports.serializeKeyPairs = serializeKeyPairs;\nfunction getKeyPairs(baggage) {\n    return baggage.getAllEntries().map(([key, value]) => {\n        let entry = `${encodeURIComponent(key)}=${encodeURIComponent(value.value)}`;\n        // include opaque metadata if provided\n        // NOTE: we intentionally don't URI-encode the metadata - that responsibility falls on the metadata implementation\n        if (value.metadata !== undefined) {\n            entry += constants_1.BAGGAGE_PROPERTIES_SEPARATOR + value.metadata.toString();\n        }\n        return entry;\n    });\n}\nexports.getKeyPairs = getKeyPairs;\nfunction parsePairKeyValue(entry) {\n    const valueProps = entry.split(constants_1.BAGGAGE_PROPERTIES_SEPARATOR);\n    if (valueProps.length <= 0)\n        return;\n    const keyPairPart = valueProps.shift();\n    if (!keyPairPart)\n        return;\n    const separatorIndex = keyPairPart.indexOf(constants_1.BAGGAGE_KEY_PAIR_SEPARATOR);\n    if (separatorIndex <= 0)\n        return;\n    const key = decodeURIComponent(keyPairPart.substring(0, separatorIndex).trim());\n    const value = decodeURIComponent(keyPairPart.substring(separatorIndex + 1).trim());\n    let metadata;\n    if (valueProps.length > 0) {\n        metadata = (0, api_1.baggageEntryMetadataFromString)(valueProps.join(constants_1.BAGGAGE_PROPERTIES_SEPARATOR));\n    }\n    return { key, value, metadata };\n}\nexports.parsePairKeyValue = parsePairKeyValue;\n/**\n * Parse a string serialized in the baggage HTTP Format (without metadata):\n * https://github.com/w3c/baggage/blob/master/baggage/HTTP_HEADER_FORMAT.md\n */\nfunction parseKeyPairsIntoRecord(value) {\n    if (typeof value !== 'string' || value.length === 0)\n        return {};\n    return value\n        .split(constants_1.BAGGAGE_ITEMS_SEPARATOR)\n        .map(entry => {\n        return parsePairKeyValue(entry);\n    })\n        .filter(keyPair => keyPair !== undefined && keyPair.value.length > 0)\n        .reduce((headers, keyPair) => {\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        headers[keyPair.key] = keyPair.value;\n        return headers;\n    }, {});\n}\nexports.parseKeyPairsIntoRecord = parseKeyPairsIntoRecord;\n//# sourceMappingURL=utils.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.W3CBaggagePropagator = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst suppress_tracing_1 = require(\"../../trace/suppress-tracing\");\nconst constants_1 = require(\"../constants\");\nconst utils_1 = require(\"../utils\");\n/**\n * Propagates {@link Baggage} through Context format propagation.\n *\n * Based on the Baggage specification:\n * https://w3c.github.io/baggage/\n */\nclass W3CBaggagePropagator {\n    inject(context, carrier, setter) {\n        const baggage = api_1.propagation.getBaggage(context);\n        if (!baggage || (0, suppress_tracing_1.isTracingSuppressed)(context))\n            return;\n        const keyPairs = (0, utils_1.getKeyPairs)(baggage)\n            .filter((pair) => {\n            return pair.length <= constants_1.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS;\n        })\n            .slice(0, constants_1.BAGGAGE_MAX_NAME_VALUE_PAIRS);\n        const headerValue = (0, utils_1.serializeKeyPairs)(keyPairs);\n        if (headerValue.length > 0) {\n            setter.set(carrier, constants_1.BAGGAGE_HEADER, headerValue);\n        }\n    }\n    extract(context, carrier, getter) {\n        const headerValue = getter.get(carrier, constants_1.BAGGAGE_HEADER);\n        const baggageString = Array.isArray(headerValue)\n            ? headerValue.join(constants_1.BAGGAGE_ITEMS_SEPARATOR)\n            : headerValue;\n        if (!baggageString)\n            return context;\n        const baggage = {};\n        if (baggageString.length === 0) {\n            return context;\n        }\n        const pairs = baggageString.split(constants_1.BAGGAGE_ITEMS_SEPARATOR);\n        pairs.forEach(entry => {\n            const keyPair = (0, utils_1.parsePairKeyValue)(entry);\n            if (keyPair) {\n                const baggageEntry = { value: keyPair.value };\n                if (keyPair.metadata) {\n                    baggageEntry.metadata = keyPair.metadata;\n                }\n                baggage[keyPair.key] = baggageEntry;\n            }\n        });\n        if (Object.entries(baggage).length === 0) {\n            return context;\n        }\n        return api_1.propagation.setBaggage(context, api_1.propagation.createBaggage(baggage));\n    }\n    fields() {\n        return [constants_1.BAGGAGE_HEADER];\n    }\n}\nexports.W3CBaggagePropagator = W3CBaggagePropagator;\n//# sourceMappingURL=W3CBaggagePropagator.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AnchoredClock = void 0;\n/**\n * A utility for returning wall times anchored to a given point in time. Wall time measurements will\n * not be taken from the system, but instead are computed by adding a monotonic clock time\n * to the anchor point.\n *\n * This is needed because the system time can change and result in unexpected situations like\n * spans ending before they are started. Creating an anchored clock for each local root span\n * ensures that span timings and durations are accurate while preventing span times from drifting\n * too far from the system clock.\n *\n * Only creating an anchored clock once per local trace ensures span times are correct relative\n * to each other. For example, a child span will never have a start time before its parent even\n * if the system clock is corrected during the local trace.\n *\n * Heavily inspired by the OTel Java anchored clock\n * https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/AnchoredClock.java\n */\nclass AnchoredClock {\n    /**\n     * Create a new AnchoredClock anchored to the current time returned by systemClock.\n     *\n     * @param systemClock should be a clock that returns the number of milliseconds since January 1 1970 such as Date\n     * @param monotonicClock should be a clock that counts milliseconds monotonically such as window.performance or perf_hooks.performance\n     */\n    constructor(systemClock, monotonicClock) {\n        this._monotonicClock = monotonicClock;\n        this._epochMillis = systemClock.now();\n        this._performanceMillis = monotonicClock.now();\n    }\n    /**\n     * Returns the current time by adding the number of milliseconds since the\n     * AnchoredClock was created to the creation epoch time\n     */\n    now() {\n        const delta = this._monotonicClock.now() - this._performanceMillis;\n        return this._epochMillis + delta;\n    }\n}\nexports.AnchoredClock = AnchoredClock;\n//# sourceMappingURL=anchored-clock.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isAttributeValue = exports.isAttributeKey = exports.sanitizeAttributes = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nfunction sanitizeAttributes(attributes) {\n    const out = {};\n    if (typeof attributes !== 'object' || attributes == null) {\n        return out;\n    }\n    for (const [key, val] of Object.entries(attributes)) {\n        if (!isAttributeKey(key)) {\n            api_1.diag.warn(`Invalid attribute key: ${key}`);\n            continue;\n        }\n        if (!isAttributeValue(val)) {\n            api_1.diag.warn(`Invalid attribute value set for key: ${key}`);\n            continue;\n        }\n        if (Array.isArray(val)) {\n            out[key] = val.slice();\n        }\n        else {\n            out[key] = val;\n        }\n    }\n    return out;\n}\nexports.sanitizeAttributes = sanitizeAttributes;\nfunction isAttributeKey(key) {\n    return typeof key === 'string' && key.length > 0;\n}\nexports.isAttributeKey = isAttributeKey;\nfunction isAttributeValue(val) {\n    if (val == null) {\n        return true;\n    }\n    if (Array.isArray(val)) {\n        return isHomogeneousAttributeValueArray(val);\n    }\n    return isValidPrimitiveAttributeValue(val);\n}\nexports.isAttributeValue = isAttributeValue;\nfunction isHomogeneousAttributeValueArray(arr) {\n    let type;\n    for (const element of arr) {\n        // null/undefined elements are allowed\n        if (element == null)\n            continue;\n        if (!type) {\n            if (isValidPrimitiveAttributeValue(element)) {\n                type = typeof element;\n                continue;\n            }\n            // encountered an invalid primitive\n            return false;\n        }\n        if (typeof element === type) {\n            continue;\n        }\n        return false;\n    }\n    return true;\n}\nfunction isValidPrimitiveAttributeValue(val) {\n    switch (typeof val) {\n        case 'number':\n        case 'boolean':\n        case 'string':\n            return true;\n    }\n    return false;\n}\n//# sourceMappingURL=attributes.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loggingErrorHandler = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\n/**\n * Returns a function that logs an error using the provided logger, or a\n * console logger if one was not provided.\n */\nfunction loggingErrorHandler() {\n    return (ex) => {\n        api_1.diag.error(stringifyException(ex));\n    };\n}\nexports.loggingErrorHandler = loggingErrorHandler;\n/**\n * Converts an exception into a string representation\n * @param {Exception} ex\n */\nfunction stringifyException(ex) {\n    if (typeof ex === 'string') {\n        return ex;\n    }\n    else {\n        return JSON.stringify(flattenException(ex));\n    }\n}\n/**\n * Flattens an exception into key-value pairs by traversing the prototype chain\n * and coercing values to strings. Duplicate properties will not be overwritten;\n * the first insert wins.\n */\nfunction flattenException(ex) {\n    const result = {};\n    let current = ex;\n    while (current !== null) {\n        Object.getOwnPropertyNames(current).forEach(propertyName => {\n            if (result[propertyName])\n                return;\n            const value = current[propertyName];\n            if (value) {\n                result[propertyName] = String(value);\n            }\n        });\n        current = Object.getPrototypeOf(current);\n    }\n    return result;\n}\n//# sourceMappingURL=logging-error-handler.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.globalErrorHandler = exports.setGlobalErrorHandler = void 0;\nconst logging_error_handler_1 = require(\"./logging-error-handler\");\n/** The global error handler delegate */\nlet delegateHandler = (0, logging_error_handler_1.loggingErrorHandler)();\n/**\n * Set the global error handler\n * @param {ErrorHandler} handler\n */\nfunction setGlobalErrorHandler(handler) {\n    delegateHandler = handler;\n}\nexports.setGlobalErrorHandler = setGlobalErrorHandler;\n/**\n * Return the global error handler\n * @param {Exception} ex\n */\nfunction globalErrorHandler(ex) {\n    try {\n        delegateHandler(ex);\n    }\n    catch (_a) { } // eslint-disable-line no-empty\n}\nexports.globalErrorHandler = globalErrorHandler;\n//# sourceMappingURL=global-error-handler.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TracesSamplerValues = void 0;\nvar TracesSamplerValues;\n(function (TracesSamplerValues) {\n    TracesSamplerValues[\"AlwaysOff\"] = \"always_off\";\n    TracesSamplerValues[\"AlwaysOn\"] = \"always_on\";\n    TracesSamplerValues[\"ParentBasedAlwaysOff\"] = \"parentbased_always_off\";\n    TracesSamplerValues[\"ParentBasedAlwaysOn\"] = \"parentbased_always_on\";\n    TracesSamplerValues[\"ParentBasedTraceIdRatio\"] = \"parentbased_traceidratio\";\n    TracesSamplerValues[\"TraceIdRatio\"] = \"traceidratio\";\n})(TracesSamplerValues = exports.TracesSamplerValues || (exports.TracesSamplerValues = {}));\n//# sourceMappingURL=sampling.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseEnvironment = exports.DEFAULT_ENVIRONMENT = exports.DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT = exports.DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT = exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT = exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst sampling_1 = require(\"./sampling\");\nconst DEFAULT_LIST_SEPARATOR = ',';\n/**\n * Environment interface to define all names\n */\nconst ENVIRONMENT_BOOLEAN_KEYS = ['OTEL_SDK_DISABLED'];\nfunction isEnvVarABoolean(key) {\n    return (ENVIRONMENT_BOOLEAN_KEYS.indexOf(key) > -1);\n}\nconst ENVIRONMENT_NUMBERS_KEYS = [\n    'OTEL_BSP_EXPORT_TIMEOUT',\n    'OTEL_BSP_MAX_EXPORT_BATCH_SIZE',\n    'OTEL_BSP_MAX_QUEUE_SIZE',\n    'OTEL_BSP_SCHEDULE_DELAY',\n    'OTEL_BLRP_EXPORT_TIMEOUT',\n    'OTEL_BLRP_MAX_EXPORT_BATCH_SIZE',\n    'OTEL_BLRP_MAX_QUEUE_SIZE',\n    'OTEL_BLRP_SCHEDULE_DELAY',\n    'OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT',\n    'OTEL_ATTRIBUTE_COUNT_LIMIT',\n    'OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT',\n    'OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT',\n    'OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT',\n    'OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT',\n    'OTEL_SPAN_EVENT_COUNT_LIMIT',\n    'OTEL_SPAN_LINK_COUNT_LIMIT',\n    'OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT',\n    'OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT',\n    'OTEL_EXPORTER_OTLP_TIMEOUT',\n    'OTEL_EXPORTER_OTLP_TRACES_TIMEOUT',\n    'OTEL_EXPORTER_OTLP_METRICS_TIMEOUT',\n    'OTEL_EXPORTER_OTLP_LOGS_TIMEOUT',\n    'OTEL_EXPORTER_JAEGER_AGENT_PORT',\n];\nfunction isEnvVarANumber(key) {\n    return (ENVIRONMENT_NUMBERS_KEYS.indexOf(key) > -1);\n}\nconst ENVIRONMENT_LISTS_KEYS = [\n    'OTEL_NO_PATCH_MODULES',\n    'OTEL_PROPAGATORS',\n    'OTEL_SEMCONV_STABILITY_OPT_IN',\n];\nfunction isEnvVarAList(key) {\n    return ENVIRONMENT_LISTS_KEYS.indexOf(key) > -1;\n}\nexports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = Infinity;\nexports.DEFAULT_ATTRIBUTE_COUNT_LIMIT = 128;\nexports.DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT = 128;\nexports.DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT = 128;\n/**\n * Default environment variables\n */\nexports.DEFAULT_ENVIRONMENT = {\n    OTEL_SDK_DISABLED: false,\n    CONTAINER_NAME: '',\n    ECS_CONTAINER_METADATA_URI_V4: '',\n    ECS_CONTAINER_METADATA_URI: '',\n    HOSTNAME: '',\n    KUBERNETES_SERVICE_HOST: '',\n    NAMESPACE: '',\n    OTEL_BSP_EXPORT_TIMEOUT: 30000,\n    OTEL_BSP_MAX_EXPORT_BATCH_SIZE: 512,\n    OTEL_BSP_MAX_QUEUE_SIZE: 2048,\n    OTEL_BSP_SCHEDULE_DELAY: 5000,\n    OTEL_BLRP_EXPORT_TIMEOUT: 30000,\n    OTEL_BLRP_MAX_EXPORT_BATCH_SIZE: 512,\n    OTEL_BLRP_MAX_QUEUE_SIZE: 2048,\n    OTEL_BLRP_SCHEDULE_DELAY: 5000,\n    OTEL_EXPORTER_JAEGER_AGENT_HOST: '',\n    OTEL_EXPORTER_JAEGER_AGENT_PORT: 6832,\n    OTEL_EXPORTER_JAEGER_ENDPOINT: '',\n    OTEL_EXPORTER_JAEGER_PASSWORD: '',\n    OTEL_EXPORTER_JAEGER_USER: '',\n    OTEL_EXPORTER_OTLP_ENDPOINT: '',\n    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: '',\n    OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: '',\n    OTEL_EXPORTER_OTLP_LOGS_ENDPOINT: '',\n    OTEL_EXPORTER_OTLP_HEADERS: '',\n    OTEL_EXPORTER_OTLP_TRACES_HEADERS: '',\n    OTEL_EXPORTER_OTLP_METRICS_HEADERS: '',\n    OTEL_EXPORTER_OTLP_LOGS_HEADERS: '',\n    OTEL_EXPORTER_OTLP_TIMEOUT: 10000,\n    OTEL_EXPORTER_OTLP_TRACES_TIMEOUT: 10000,\n    OTEL_EXPORTER_OTLP_METRICS_TIMEOUT: 10000,\n    OTEL_EXPORTER_OTLP_LOGS_TIMEOUT: 10000,\n    OTEL_EXPORTER_ZIPKIN_ENDPOINT: 'http://localhost:9411/api/v2/spans',\n    OTEL_LOG_LEVEL: api_1.DiagLogLevel.INFO,\n    OTEL_NO_PATCH_MODULES: [],\n    OTEL_PROPAGATORS: ['tracecontext', 'baggage'],\n    OTEL_RESOURCE_ATTRIBUTES: '',\n    OTEL_SERVICE_NAME: '',\n    OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT: exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT,\n    OTEL_ATTRIBUTE_COUNT_LIMIT: exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT,\n    OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT: exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT,\n    OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT: exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT,\n    OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT: exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT,\n    OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT: exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT,\n    OTEL_SPAN_EVENT_COUNT_LIMIT: 128,\n    OTEL_SPAN_LINK_COUNT_LIMIT: 128,\n    OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT: exports.DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT,\n    OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT: exports.DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT,\n    OTEL_TRACES_EXPORTER: '',\n    OTEL_TRACES_SAMPLER: sampling_1.TracesSamplerValues.ParentBasedAlwaysOn,\n    OTEL_TRACES_SAMPLER_ARG: '',\n    OTEL_LOGS_EXPORTER: '',\n    OTEL_EXPORTER_OTLP_INSECURE: '',\n    OTEL_EXPORTER_OTLP_TRACES_INSECURE: '',\n    OTEL_EXPORTER_OTLP_METRICS_INSECURE: '',\n    OTEL_EXPORTER_OTLP_LOGS_INSECURE: '',\n    OTEL_EXPORTER_OTLP_CERTIFICATE: '',\n    OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE: '',\n    OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE: '',\n    OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE: '',\n    OTEL_EXPORTER_OTLP_COMPRESSION: '',\n    OTEL_EXPORTER_OTLP_TRACES_COMPRESSION: '',\n    OTEL_EXPORTER_OTLP_METRICS_COMPRESSION: '',\n    OTEL_EXPORTER_OTLP_LOGS_COMPRESSION: '',\n    OTEL_EXPORTER_OTLP_CLIENT_KEY: '',\n    OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY: '',\n    OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY: '',\n    OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY: '',\n    OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE: '',\n    OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE: '',\n    OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE: '',\n    OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE: '',\n    OTEL_EXPORTER_OTLP_PROTOCOL: 'http/protobuf',\n    OTEL_EXPORTER_OTLP_TRACES_PROTOCOL: 'http/protobuf',\n    OTEL_EXPORTER_OTLP_METRICS_PROTOCOL: 'http/protobuf',\n    OTEL_EXPORTER_OTLP_LOGS_PROTOCOL: 'http/protobuf',\n    OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: 'cumulative',\n    OTEL_SEMCONV_STABILITY_OPT_IN: [],\n};\n/**\n * @param key\n * @param environment\n * @param values\n */\nfunction parseBoolean(key, environment, values) {\n    if (typeof values[key] === 'undefined') {\n        return;\n    }\n    const value = String(values[key]);\n    // support case-insensitive \"true\"\n    environment[key] = value.toLowerCase() === 'true';\n}\n/**\n * Parses a variable as number with number validation\n * @param name\n * @param environment\n * @param values\n * @param min\n * @param max\n */\nfunction parseNumber(name, environment, values, min = -Infinity, max = Infinity) {\n    if (typeof values[name] !== 'undefined') {\n        const value = Number(values[name]);\n        if (!isNaN(value)) {\n            if (value < min) {\n                environment[name] = min;\n            }\n            else if (value > max) {\n                environment[name] = max;\n            }\n            else {\n                environment[name] = value;\n            }\n        }\n    }\n}\n/**\n * Parses list-like strings from input into output.\n * @param name\n * @param environment\n * @param values\n * @param separator\n */\nfunction parseStringList(name, output, input, separator = DEFAULT_LIST_SEPARATOR) {\n    const givenValue = input[name];\n    if (typeof givenValue === 'string') {\n        output[name] = givenValue.split(separator).map(v => v.trim());\n    }\n}\n// The support string -> DiagLogLevel mappings\nconst logLevelMap = {\n    ALL: api_1.DiagLogLevel.ALL,\n    VERBOSE: api_1.DiagLogLevel.VERBOSE,\n    DEBUG: api_1.DiagLogLevel.DEBUG,\n    INFO: api_1.DiagLogLevel.INFO,\n    WARN: api_1.DiagLogLevel.WARN,\n    ERROR: api_1.DiagLogLevel.ERROR,\n    NONE: api_1.DiagLogLevel.NONE,\n};\n/**\n * Environmentally sets log level if valid log level string is provided\n * @param key\n * @param environment\n * @param values\n */\nfunction setLogLevelFromEnv(key, environment, values) {\n    const value = values[key];\n    if (typeof value === 'string') {\n        const theLevel = logLevelMap[value.toUpperCase()];\n        if (theLevel != null) {\n            environment[key] = theLevel;\n        }\n    }\n}\n/**\n * Parses environment values\n * @param values\n */\nfunction parseEnvironment(values) {\n    const environment = {};\n    for (const env in exports.DEFAULT_ENVIRONMENT) {\n        const key = env;\n        switch (key) {\n            case 'OTEL_LOG_LEVEL':\n                setLogLevelFromEnv(key, environment, values);\n                break;\n            default:\n                if (isEnvVarABoolean(key)) {\n                    parseBoolean(key, environment, values);\n                }\n                else if (isEnvVarANumber(key)) {\n                    parseNumber(key, environment, values);\n                }\n                else if (isEnvVarAList(key)) {\n                    parseStringList(key, environment, values);\n                }\n                else {\n                    const value = values[key];\n                    if (typeof value !== 'undefined' && value !== null) {\n                        environment[key] = String(value);\n                    }\n                }\n        }\n    }\n    return environment;\n}\nexports.parseEnvironment = parseEnvironment;\n//# sourceMappingURL=environment.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEnvWithoutDefaults = exports.getEnv = void 0;\nconst environment_1 = require(\"../../utils/environment\");\n/**\n * Gets the environment variables\n */\nfunction getEnv() {\n    const processEnv = (0, environment_1.parseEnvironment)(process.env);\n    return Object.assign({}, environment_1.DEFAULT_ENVIRONMENT, processEnv);\n}\nexports.getEnv = getEnv;\nfunction getEnvWithoutDefaults() {\n    return (0, environment_1.parseEnvironment)(process.env);\n}\nexports.getEnvWithoutDefaults = getEnvWithoutDefaults;\n//# sourceMappingURL=environment.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._globalThis = void 0;\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line node/no-unsupported-features/es-builtins\nexports._globalThis = typeof globalThis === 'object' ? globalThis : global;\n//# sourceMappingURL=globalThis.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hexToBinary = void 0;\nfunction intValue(charCode) {\n    // 0-9\n    if (charCode >= 48 && charCode <= 57) {\n        return charCode - 48;\n    }\n    // a-f\n    if (charCode >= 97 && charCode <= 102) {\n        return charCode - 87;\n    }\n    // A-F\n    return charCode - 55;\n}\nfunction hexToBinary(hexStr) {\n    const buf = new Uint8Array(hexStr.length / 2);\n    let offset = 0;\n    for (let i = 0; i < hexStr.length; i += 2) {\n        const hi = intValue(hexStr.charCodeAt(i));\n        const lo = intValue(hexStr.charCodeAt(i + 1));\n        buf[offset++] = (hi << 4) | lo;\n    }\n    return buf;\n}\nexports.hexToBinary = hexToBinary;\n//# sourceMappingURL=hex-to-binary.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hexToBase64 = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst hex_to_binary_1 = require(\"../../common/hex-to-binary\");\nfunction hexToBase64(hexStr) {\n    return Buffer.from((0, hex_to_binary_1.hexToBinary)(hexStr)).toString('base64');\n}\nexports.hexToBase64 = hexToBase64;\n//# sourceMappingURL=hex-to-base64.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RandomIdGenerator = void 0;\nconst SPAN_ID_BYTES = 8;\nconst TRACE_ID_BYTES = 16;\n/**\n * @deprecated Use the one defined in @opentelemetry/sdk-trace-base instead.\n */\nclass RandomIdGenerator {\n    constructor() {\n        /**\n         * Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex\n         * characters corresponding to 128 bits.\n         */\n        this.generateTraceId = getIdGenerator(TRACE_ID_BYTES);\n        /**\n         * Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex\n         * characters corresponding to 64 bits.\n         */\n        this.generateSpanId = getIdGenerator(SPAN_ID_BYTES);\n    }\n}\nexports.RandomIdGenerator = RandomIdGenerator;\nconst SHARED_BUFFER = Buffer.allocUnsafe(TRACE_ID_BYTES);\nfunction getIdGenerator(bytes) {\n    return function generateId() {\n        for (let i = 0; i < bytes / 4; i++) {\n            // unsigned right shift drops decimal part of the number\n            // it is required because if a number between 2**32 and 2**32 - 1 is generated, an out of range error is thrown by writeUInt32BE\n            SHARED_BUFFER.writeUInt32BE((Math.random() * 2 ** 32) >>> 0, i * 4);\n        }\n        // If buffer is all 0, set the last byte to 1 to guarantee a valid w3c id is generated\n        for (let i = 0; i < bytes; i++) {\n            if (SHARED_BUFFER[i] > 0) {\n                break;\n            }\n            else if (i === bytes - 1) {\n                SHARED_BUFFER[bytes - 1] = 1;\n            }\n        }\n        return SHARED_BUFFER.toString('hex', 0, bytes);\n    };\n}\n//# sourceMappingURL=RandomIdGenerator.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.otperformance = void 0;\nconst perf_hooks_1 = require(\"perf_hooks\");\nexports.otperformance = perf_hooks_1.performance;\n//# sourceMappingURL=performance.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.VERSION = '1.30.1';\n//# sourceMappingURL=version.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Creates a const map from the given values\n * @param values - An array of values to be used as keys and values in the map.\n * @returns A populated version of the map with the values and keys derived from the values.\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function createConstMap(values) {\n    // eslint-disable-next-line prefer-const, @typescript-eslint/no-explicit-any\n    var res = {};\n    var len = values.length;\n    for (var lp = 0; lp < len; lp++) {\n        var val = values[lp];\n        if (val) {\n            res[String(val).toUpperCase().replace(/[-.]/g, '_')] = val;\n        }\n    }\n    return res;\n}\n//# sourceMappingURL=utils.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createConstMap } from '../internal/utils';\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticAttributes\n//----------------------------------------------------------------------------------------------------------\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_AWS_LAMBDA_INVOKED_ARN = 'aws.lambda.invoked_arn';\nvar TMP_DB_SYSTEM = 'db.system';\nvar TMP_DB_CONNECTION_STRING = 'db.connection_string';\nvar TMP_DB_USER = 'db.user';\nvar TMP_DB_JDBC_DRIVER_CLASSNAME = 'db.jdbc.driver_classname';\nvar TMP_DB_NAME = 'db.name';\nvar TMP_DB_STATEMENT = 'db.statement';\nvar TMP_DB_OPERATION = 'db.operation';\nvar TMP_DB_MSSQL_INSTANCE_NAME = 'db.mssql.instance_name';\nvar TMP_DB_CASSANDRA_KEYSPACE = 'db.cassandra.keyspace';\nvar TMP_DB_CASSANDRA_PAGE_SIZE = 'db.cassandra.page_size';\nvar TMP_DB_CASSANDRA_CONSISTENCY_LEVEL = 'db.cassandra.consistency_level';\nvar TMP_DB_CASSANDRA_TABLE = 'db.cassandra.table';\nvar TMP_DB_CASSANDRA_IDEMPOTENCE = 'db.cassandra.idempotence';\nvar TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'db.cassandra.speculative_execution_count';\nvar TMP_DB_CASSANDRA_COORDINATOR_ID = 'db.cassandra.coordinator.id';\nvar TMP_DB_CASSANDRA_COORDINATOR_DC = 'db.cassandra.coordinator.dc';\nvar TMP_DB_HBASE_NAMESPACE = 'db.hbase.namespace';\nvar TMP_DB_REDIS_DATABASE_INDEX = 'db.redis.database_index';\nvar TMP_DB_MONGODB_COLLECTION = 'db.mongodb.collection';\nvar TMP_DB_SQL_TABLE = 'db.sql.table';\nvar TMP_EXCEPTION_TYPE = 'exception.type';\nvar TMP_EXCEPTION_MESSAGE = 'exception.message';\nvar TMP_EXCEPTION_STACKTRACE = 'exception.stacktrace';\nvar TMP_EXCEPTION_ESCAPED = 'exception.escaped';\nvar TMP_FAAS_TRIGGER = 'faas.trigger';\nvar TMP_FAAS_EXECUTION = 'faas.execution';\nvar TMP_FAAS_DOCUMENT_COLLECTION = 'faas.document.collection';\nvar TMP_FAAS_DOCUMENT_OPERATION = 'faas.document.operation';\nvar TMP_FAAS_DOCUMENT_TIME = 'faas.document.time';\nvar TMP_FAAS_DOCUMENT_NAME = 'faas.document.name';\nvar TMP_FAAS_TIME = 'faas.time';\nvar TMP_FAAS_CRON = 'faas.cron';\nvar TMP_FAAS_COLDSTART = 'faas.coldstart';\nvar TMP_FAAS_INVOKED_NAME = 'faas.invoked_name';\nvar TMP_FAAS_INVOKED_PROVIDER = 'faas.invoked_provider';\nvar TMP_FAAS_INVOKED_REGION = 'faas.invoked_region';\nvar TMP_NET_TRANSPORT = 'net.transport';\nvar TMP_NET_PEER_IP = 'net.peer.ip';\nvar TMP_NET_PEER_PORT = 'net.peer.port';\nvar TMP_NET_PEER_NAME = 'net.peer.name';\nvar TMP_NET_HOST_IP = 'net.host.ip';\nvar TMP_NET_HOST_PORT = 'net.host.port';\nvar TMP_NET_HOST_NAME = 'net.host.name';\nvar TMP_NET_HOST_CONNECTION_TYPE = 'net.host.connection.type';\nvar TMP_NET_HOST_CONNECTION_SUBTYPE = 'net.host.connection.subtype';\nvar TMP_NET_HOST_CARRIER_NAME = 'net.host.carrier.name';\nvar TMP_NET_HOST_CARRIER_MCC = 'net.host.carrier.mcc';\nvar TMP_NET_HOST_CARRIER_MNC = 'net.host.carrier.mnc';\nvar TMP_NET_HOST_CARRIER_ICC = 'net.host.carrier.icc';\nvar TMP_PEER_SERVICE = 'peer.service';\nvar TMP_ENDUSER_ID = 'enduser.id';\nvar TMP_ENDUSER_ROLE = 'enduser.role';\nvar TMP_ENDUSER_SCOPE = 'enduser.scope';\nvar TMP_THREAD_ID = 'thread.id';\nvar TMP_THREAD_NAME = 'thread.name';\nvar TMP_CODE_FUNCTION = 'code.function';\nvar TMP_CODE_NAMESPACE = 'code.namespace';\nvar TMP_CODE_FILEPATH = 'code.filepath';\nvar TMP_CODE_LINENO = 'code.lineno';\nvar TMP_HTTP_METHOD = 'http.method';\nvar TMP_HTTP_URL = 'http.url';\nvar TMP_HTTP_TARGET = 'http.target';\nvar TMP_HTTP_HOST = 'http.host';\nvar TMP_HTTP_SCHEME = 'http.scheme';\nvar TMP_HTTP_STATUS_CODE = 'http.status_code';\nvar TMP_HTTP_FLAVOR = 'http.flavor';\nvar TMP_HTTP_USER_AGENT = 'http.user_agent';\nvar TMP_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length';\nvar TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = 'http.request_content_length_uncompressed';\nvar TMP_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length';\nvar TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = 'http.response_content_length_uncompressed';\nvar TMP_HTTP_SERVER_NAME = 'http.server_name';\nvar TMP_HTTP_ROUTE = 'http.route';\nvar TMP_HTTP_CLIENT_IP = 'http.client_ip';\nvar TMP_AWS_DYNAMODB_TABLE_NAMES = 'aws.dynamodb.table_names';\nvar TMP_AWS_DYNAMODB_CONSUMED_CAPACITY = 'aws.dynamodb.consumed_capacity';\nvar TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = 'aws.dynamodb.item_collection_metrics';\nvar TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = 'aws.dynamodb.provisioned_read_capacity';\nvar TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = 'aws.dynamodb.provisioned_write_capacity';\nvar TMP_AWS_DYNAMODB_CONSISTENT_READ = 'aws.dynamodb.consistent_read';\nvar TMP_AWS_DYNAMODB_PROJECTION = 'aws.dynamodb.projection';\nvar TMP_AWS_DYNAMODB_LIMIT = 'aws.dynamodb.limit';\nvar TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET = 'aws.dynamodb.attributes_to_get';\nvar TMP_AWS_DYNAMODB_INDEX_NAME = 'aws.dynamodb.index_name';\nvar TMP_AWS_DYNAMODB_SELECT = 'aws.dynamodb.select';\nvar TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = 'aws.dynamodb.global_secondary_indexes';\nvar TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = 'aws.dynamodb.local_secondary_indexes';\nvar TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = 'aws.dynamodb.exclusive_start_table';\nvar TMP_AWS_DYNAMODB_TABLE_COUNT = 'aws.dynamodb.table_count';\nvar TMP_AWS_DYNAMODB_SCAN_FORWARD = 'aws.dynamodb.scan_forward';\nvar TMP_AWS_DYNAMODB_SEGMENT = 'aws.dynamodb.segment';\nvar TMP_AWS_DYNAMODB_TOTAL_SEGMENTS = 'aws.dynamodb.total_segments';\nvar TMP_AWS_DYNAMODB_COUNT = 'aws.dynamodb.count';\nvar TMP_AWS_DYNAMODB_SCANNED_COUNT = 'aws.dynamodb.scanned_count';\nvar TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = 'aws.dynamodb.attribute_definitions';\nvar TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = 'aws.dynamodb.global_secondary_index_updates';\nvar TMP_MESSAGING_SYSTEM = 'messaging.system';\nvar TMP_MESSAGING_DESTINATION = 'messaging.destination';\nvar TMP_MESSAGING_DESTINATION_KIND = 'messaging.destination_kind';\nvar TMP_MESSAGING_TEMP_DESTINATION = 'messaging.temp_destination';\nvar TMP_MESSAGING_PROTOCOL = 'messaging.protocol';\nvar TMP_MESSAGING_PROTOCOL_VERSION = 'messaging.protocol_version';\nvar TMP_MESSAGING_URL = 'messaging.url';\nvar TMP_MESSAGING_MESSAGE_ID = 'messaging.message_id';\nvar TMP_MESSAGING_CONVERSATION_ID = 'messaging.conversation_id';\nvar TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = 'messaging.message_payload_size_bytes';\nvar TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = 'messaging.message_payload_compressed_size_bytes';\nvar TMP_MESSAGING_OPERATION = 'messaging.operation';\nvar TMP_MESSAGING_CONSUMER_ID = 'messaging.consumer_id';\nvar TMP_MESSAGING_RABBITMQ_ROUTING_KEY = 'messaging.rabbitmq.routing_key';\nvar TMP_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message_key';\nvar TMP_MESSAGING_KAFKA_CONSUMER_GROUP = 'messaging.kafka.consumer_group';\nvar TMP_MESSAGING_KAFKA_CLIENT_ID = 'messaging.kafka.client_id';\nvar TMP_MESSAGING_KAFKA_PARTITION = 'messaging.kafka.partition';\nvar TMP_MESSAGING_KAFKA_TOMBSTONE = 'messaging.kafka.tombstone';\nvar TMP_RPC_SYSTEM = 'rpc.system';\nvar TMP_RPC_SERVICE = 'rpc.service';\nvar TMP_RPC_METHOD = 'rpc.method';\nvar TMP_RPC_GRPC_STATUS_CODE = 'rpc.grpc.status_code';\nvar TMP_RPC_JSONRPC_VERSION = 'rpc.jsonrpc.version';\nvar TMP_RPC_JSONRPC_REQUEST_ID = 'rpc.jsonrpc.request_id';\nvar TMP_RPC_JSONRPC_ERROR_CODE = 'rpc.jsonrpc.error_code';\nvar TMP_RPC_JSONRPC_ERROR_MESSAGE = 'rpc.jsonrpc.error_message';\nvar TMP_MESSAGE_TYPE = 'message.type';\nvar TMP_MESSAGE_ID = 'message.id';\nvar TMP_MESSAGE_COMPRESSED_SIZE = 'message.compressed_size';\nvar TMP_MESSAGE_UNCOMPRESSED_SIZE = 'message.uncompressed_size';\n/**\n * The full invoked ARN as provided on the `Context` passed to the function (`Lambda-Runtime-Invoked-Function-Arn` header on the `/runtime/invocation/next` applicable).\n *\n * Note: This may be different from `faas.id` if an alias is involved.\n *\n * @deprecated Use ATTR_AWS_LAMBDA_INVOKED_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_LAMBDA_INVOKED_ARN = TMP_AWS_LAMBDA_INVOKED_ARN;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use ATTR_DB_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_SYSTEM = TMP_DB_SYSTEM;\n/**\n * The connection string used to connect to the database. It is recommended to remove embedded credentials.\n *\n * @deprecated Use ATTR_DB_CONNECTION_STRING in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CONNECTION_STRING = TMP_DB_CONNECTION_STRING;\n/**\n * Username for accessing the database.\n *\n * @deprecated Use ATTR_DB_USER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_USER = TMP_DB_USER;\n/**\n * The fully-qualified class name of the [Java Database Connectivity (JDBC)](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) driver used to connect.\n *\n * @deprecated Use ATTR_DB_JDBC_DRIVER_CLASSNAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_JDBC_DRIVER_CLASSNAME = TMP_DB_JDBC_DRIVER_CLASSNAME;\n/**\n * If no [tech-specific attribute](#call-level-attributes-for-specific-technologies) is defined, this attribute is used to report the name of the database being accessed. For commands that switch the database, this should be set to the target database (even if the command fails).\n *\n * Note: In some SQL databases, the database name to be used is called &#34;schema name&#34;.\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_NAME = TMP_DB_NAME;\n/**\n * The database statement being executed.\n *\n * Note: The value may be sanitized to exclude sensitive information.\n *\n * @deprecated Use ATTR_DB_STATEMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_STATEMENT = TMP_DB_STATEMENT;\n/**\n * The name of the operation being executed, e.g. the [MongoDB command name](https://docs.mongodb.com/manual/reference/command/#database-operations) such as `findAndModify`, or the SQL keyword.\n *\n * Note: When setting this to an SQL keyword, it is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if the operation name is provided by the library being instrumented. If the SQL statement has an ambiguous operation, or performs more than one operation, this value may be omitted.\n *\n * @deprecated Use ATTR_DB_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_OPERATION = TMP_DB_OPERATION;\n/**\n * The Microsoft SQL Server [instance name](https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=sql-server-ver15) connecting to. This name is used to determine the port of a named instance.\n *\n * Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer required (but still recommended if non-standard).\n *\n * @deprecated Use ATTR_DB_MSSQL_INSTANCE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_MSSQL_INSTANCE_NAME = TMP_DB_MSSQL_INSTANCE_NAME;\n/**\n * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_KEYSPACE = TMP_DB_CASSANDRA_KEYSPACE;\n/**\n * The fetch size used for paging, i.e. how many rows will be returned at once.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_PAGE_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_PAGE_SIZE = TMP_DB_CASSANDRA_PAGE_SIZE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL = TMP_DB_CASSANDRA_CONSISTENCY_LEVEL;\n/**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: This mirrors the db.sql.table attribute but references cassandra rather than sql. It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_TABLE = TMP_DB_CASSANDRA_TABLE;\n/**\n * Whether or not the query is idempotent.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_IDEMPOTENCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_IDEMPOTENCE = TMP_DB_CASSANDRA_IDEMPOTENCE;\n/**\n * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT;\n/**\n * The ID of the coordinating node for a query.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_COORDINATOR_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_COORDINATOR_ID = TMP_DB_CASSANDRA_COORDINATOR_ID;\n/**\n * The data center of the coordinating node for a query.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_COORDINATOR_DC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_COORDINATOR_DC = TMP_DB_CASSANDRA_COORDINATOR_DC;\n/**\n * The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being accessed. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_HBASE_NAMESPACE = TMP_DB_HBASE_NAMESPACE;\n/**\n * The index of the database being accessed as used in the [`SELECT` command](https://redis.io/commands/select), provided as an integer. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_REDIS_DATABASE_INDEX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_REDIS_DATABASE_INDEX = TMP_DB_REDIS_DATABASE_INDEX;\n/**\n * The collection being accessed within the database stated in `db.name`.\n *\n * @deprecated Use ATTR_DB_MONGODB_COLLECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_MONGODB_COLLECTION = TMP_DB_MONGODB_COLLECTION;\n/**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n *\n * @deprecated Use ATTR_DB_SQL_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_SQL_TABLE = TMP_DB_SQL_TABLE;\n/**\n * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n *\n * @deprecated Use ATTR_EXCEPTION_TYPE.\n */\nexport var SEMATTRS_EXCEPTION_TYPE = TMP_EXCEPTION_TYPE;\n/**\n * The exception message.\n *\n * @deprecated Use ATTR_EXCEPTION_MESSAGE.\n */\nexport var SEMATTRS_EXCEPTION_MESSAGE = TMP_EXCEPTION_MESSAGE;\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n *\n * @deprecated Use ATTR_EXCEPTION_STACKTRACE.\n */\nexport var SEMATTRS_EXCEPTION_STACKTRACE = TMP_EXCEPTION_STACKTRACE;\n/**\n* SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.\n*\n* Note: An exception is considered to have escaped (or left) the scope of a span,\nif that span is ended while the exception is still logically &#34;in flight&#34;.\nThis may be actually &#34;in flight&#34; in some languages (e.g. if the exception\nis passed to a Context manager&#39;s `__exit__` method in Python) but will\nusually be caught at the point of recording the exception in most languages.\n\nIt is usually not possible to determine at the point where an exception is thrown\nwhether it will escape the scope of a span.\nHowever, it is trivial to know that an exception\nwill escape, if one checks for an active exception just before ending the span,\nas done in the [example above](#exception-end-example).\n\nIt follows that an exception may still escape the scope of the span\neven if the `exception.escaped` attribute was not set or set to false,\nsince the event might have been recorded at a time where it was not\nclear whether the exception will escape.\n*\n* @deprecated Use ATTR_EXCEPTION_ESCAPED.\n*/\nexport var SEMATTRS_EXCEPTION_ESCAPED = TMP_EXCEPTION_ESCAPED;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use ATTR_FAAS_TRIGGER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_TRIGGER = TMP_FAAS_TRIGGER;\n/**\n * The execution ID of the current function execution.\n *\n * @deprecated Use ATTR_FAAS_INVOCATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_EXECUTION = TMP_FAAS_EXECUTION;\n/**\n * The name of the source on which the triggering operation was performed. For example, in Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database name.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_COLLECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_DOCUMENT_COLLECTION = TMP_FAAS_DOCUMENT_COLLECTION;\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_DOCUMENT_OPERATION = TMP_FAAS_DOCUMENT_OPERATION;\n/**\n * A string containing the time when the data was accessed in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_TIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_DOCUMENT_TIME = TMP_FAAS_DOCUMENT_TIME;\n/**\n * The document name/table subjected to the operation. For example, in Cloud Storage or S3 is the name of the file, and in Cosmos DB the table name.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_DOCUMENT_NAME = TMP_FAAS_DOCUMENT_NAME;\n/**\n * A string containing the function invocation time in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n *\n * @deprecated Use ATTR_FAAS_TIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_TIME = TMP_FAAS_TIME;\n/**\n * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm).\n *\n * @deprecated Use ATTR_FAAS_CRON in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_CRON = TMP_FAAS_CRON;\n/**\n * A boolean that is true if the serverless function is executed for the first time (aka cold-start).\n *\n * @deprecated Use ATTR_FAAS_COLDSTART in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_COLDSTART = TMP_FAAS_COLDSTART;\n/**\n * The name of the invoked function.\n *\n * Note: SHOULD be equal to the `faas.name` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_INVOKED_NAME = TMP_FAAS_INVOKED_NAME;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_PROVIDER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_INVOKED_PROVIDER = TMP_FAAS_INVOKED_PROVIDER;\n/**\n * The cloud region of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_REGION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_INVOKED_REGION = TMP_FAAS_INVOKED_REGION;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use ATTR_NET_TRANSPORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_TRANSPORT = TMP_NET_TRANSPORT;\n/**\n * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6).\n *\n * @deprecated Use ATTR_NET_PEER_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_PEER_IP = TMP_NET_PEER_IP;\n/**\n * Remote port number.\n *\n * @deprecated Use ATTR_NET_PEER_PORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_PEER_PORT = TMP_NET_PEER_PORT;\n/**\n * Remote hostname or similar, see note below.\n *\n * @deprecated Use ATTR_NET_PEER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_PEER_NAME = TMP_NET_PEER_NAME;\n/**\n * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.\n *\n * @deprecated Use ATTR_NET_HOST_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_IP = TMP_NET_HOST_IP;\n/**\n * Like `net.peer.port` but for the host port.\n *\n * @deprecated Use ATTR_NET_HOST_PORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_PORT = TMP_NET_HOST_PORT;\n/**\n * Local hostname or similar, see note below.\n *\n * @deprecated Use ATTR_NET_HOST_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_NAME = TMP_NET_HOST_NAME;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use ATTR_NETWORK_CONNECTION_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_CONNECTION_TYPE = TMP_NET_HOST_CONNECTION_TYPE;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use ATTR_NETWORK_CONNECTION_SUBTYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_CONNECTION_SUBTYPE = TMP_NET_HOST_CONNECTION_SUBTYPE;\n/**\n * The name of the mobile carrier.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_CARRIER_NAME = TMP_NET_HOST_CARRIER_NAME;\n/**\n * The mobile carrier country code.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_MCC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_CARRIER_MCC = TMP_NET_HOST_CARRIER_MCC;\n/**\n * The mobile carrier network code.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_MNC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_CARRIER_MNC = TMP_NET_HOST_CARRIER_MNC;\n/**\n * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_ICC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_CARRIER_ICC = TMP_NET_HOST_CARRIER_ICC;\n/**\n * The [`service.name`](../../resource/semantic_conventions/README.md#service) of the remote service. SHOULD be equal to the actual `service.name` resource attribute of the remote service if any.\n *\n * @deprecated Use ATTR_PEER_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_PEER_SERVICE = TMP_PEER_SERVICE;\n/**\n * Username or client_id extracted from the access token or [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) header in the inbound request from outside the system.\n *\n * @deprecated Use ATTR_ENDUSER_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_ENDUSER_ID = TMP_ENDUSER_ID;\n/**\n * Actual/assumed role the client is making the request under extracted from token or application security context.\n *\n * @deprecated Use ATTR_ENDUSER_ROLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_ENDUSER_ROLE = TMP_ENDUSER_ROLE;\n/**\n * Scopes or granted authorities the client currently possesses extracted from token or application security context. The value would come from the scope associated with an [OAuth 2.0 Access Token](https://tools.ietf.org/html/rfc6749#section-3.3) or an attribute value in a [SAML 2.0 Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html).\n *\n * @deprecated Use ATTR_ENDUSER_SCOPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_ENDUSER_SCOPE = TMP_ENDUSER_SCOPE;\n/**\n * Current &#34;managed&#34; thread ID (as opposed to OS thread ID).\n *\n * @deprecated Use ATTR_THREAD_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_THREAD_ID = TMP_THREAD_ID;\n/**\n * Current thread name.\n *\n * @deprecated Use ATTR_THREAD_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_THREAD_NAME = TMP_THREAD_NAME;\n/**\n * The method or function name, or equivalent (usually rightmost part of the code unit&#39;s name).\n *\n * @deprecated Use ATTR_CODE_FUNCTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_CODE_FUNCTION = TMP_CODE_FUNCTION;\n/**\n * The &#34;namespace&#34; within which `code.function` is defined. Usually the qualified class or module name, such that `code.namespace` + some separator + `code.function` form a unique identifier for the code unit.\n *\n * @deprecated Use ATTR_CODE_NAMESPACE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_CODE_NAMESPACE = TMP_CODE_NAMESPACE;\n/**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).\n *\n * @deprecated Use ATTR_CODE_FILEPATH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_CODE_FILEPATH = TMP_CODE_FILEPATH;\n/**\n * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`.\n *\n * @deprecated Use ATTR_CODE_LINENO in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_CODE_LINENO = TMP_CODE_LINENO;\n/**\n * HTTP request method.\n *\n * @deprecated Use ATTR_HTTP_METHOD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_METHOD = TMP_HTTP_METHOD;\n/**\n * Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`. Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.\n *\n * Note: `http.url` MUST NOT contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case the attribute&#39;s value should be `https://www.example.com/`.\n *\n * @deprecated Use ATTR_HTTP_URL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_URL = TMP_HTTP_URL;\n/**\n * The full request target as passed in a HTTP request line or equivalent.\n *\n * @deprecated Use ATTR_HTTP_TARGET in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_TARGET = TMP_HTTP_TARGET;\n/**\n * The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4). An empty Host header should also be reported, see note.\n *\n * Note: When the header is present but empty the attribute SHOULD be set to the empty string. Note that this is a valid situation that is expected in certain cases, according the aforementioned [section of RFC 7230](https://tools.ietf.org/html/rfc7230#section-5.4). When the header is not set the attribute MUST NOT be set.\n *\n * @deprecated Use ATTR_HTTP_HOST in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_HOST = TMP_HTTP_HOST;\n/**\n * The URI scheme identifying the used protocol.\n *\n * @deprecated Use ATTR_HTTP_SCHEME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_SCHEME = TMP_HTTP_SCHEME;\n/**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n *\n * @deprecated Use ATTR_HTTP_STATUS_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_STATUS_CODE = TMP_HTTP_STATUS_CODE;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use ATTR_HTTP_FLAVOR in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_FLAVOR = TMP_HTTP_FLAVOR;\n/**\n * Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.\n *\n * @deprecated Use ATTR_HTTP_USER_AGENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_USER_AGENT = TMP_HTTP_USER_AGENT;\n/**\n * The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n *\n * @deprecated Use ATTR_HTTP_REQUEST_CONTENT_LENGTH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH = TMP_HTTP_REQUEST_CONTENT_LENGTH;\n/**\n * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used.\n *\n * @deprecated Use ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED;\n/**\n * The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n *\n * @deprecated Use ATTR_HTTP_RESPONSE_CONTENT_LENGTH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH = TMP_HTTP_RESPONSE_CONTENT_LENGTH;\n/**\n * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used.\n *\n * @deprecated Use ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED;\n/**\n * The primary server name of the matched virtual host. This should be obtained via configuration. If no such configuration can be obtained, this attribute MUST NOT be set ( `net.host.name` should be used instead).\n *\n * Note: `http.url` is usually not readily available on the server side but would have to be assembled in a cumbersome and sometimes lossy process from other information (see e.g. open-telemetry/opentelemetry-python/pull/148). It is thus preferred to supply the raw data that is available.\n *\n * @deprecated Use ATTR_HTTP_SERVER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_SERVER_NAME = TMP_HTTP_SERVER_NAME;\n/**\n * The matched route (path template).\n *\n * @deprecated Use ATTR_HTTP_ROUTE.\n */\nexport var SEMATTRS_HTTP_ROUTE = TMP_HTTP_ROUTE;\n/**\n* The IP address of the original client behind all proxies, if known (e.g. from [X-Forwarded-For](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For)).\n*\n* Note: This is not necessarily the same as `net.peer.ip`, which would\nidentify the network-level peer, which may be a proxy.\n\nThis attribute should be set when a source of information different\nfrom the one used for `net.peer.ip`, is available even if that other\nsource just confirms the same value as `net.peer.ip`.\nRationale: For `net.peer.ip`, one typically does not know if it\ncomes from a proxy, reverse proxy, or the actual client. Setting\n`http.client_ip` when it&#39;s the same as `net.peer.ip` means that\none is at least somewhat confident that the address is not that of\nthe closest proxy.\n*\n* @deprecated Use ATTR_HTTP_CLIENT_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexport var SEMATTRS_HTTP_CLIENT_IP = TMP_HTTP_CLIENT_IP;\n/**\n * The keys in the `RequestItems` object field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TABLE_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_TABLE_NAMES = TMP_AWS_DYNAMODB_TABLE_NAMES;\n/**\n * The JSON-serialized value of each item in the `ConsumedCapacity` response field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_CONSUMED_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY = TMP_AWS_DYNAMODB_CONSUMED_CAPACITY;\n/**\n * The JSON-serialized value of the `ItemCollectionMetrics` response field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ITEM_COLLECTION_METRICS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS;\n/**\n * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY;\n/**\n * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY;\n/**\n * The value of the `ConsistentRead` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_CONSISTENT_READ in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ = TMP_AWS_DYNAMODB_CONSISTENT_READ;\n/**\n * The value of the `ProjectionExpression` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROJECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_PROJECTION = TMP_AWS_DYNAMODB_PROJECTION;\n/**\n * The value of the `Limit` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_LIMIT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_LIMIT = TMP_AWS_DYNAMODB_LIMIT;\n/**\n * The value of the `AttributesToGet` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ATTRIBUTES_TO_GET in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET = TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET;\n/**\n * The value of the `IndexName` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_INDEX_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_INDEX_NAME = TMP_AWS_DYNAMODB_INDEX_NAME;\n/**\n * The value of the `Select` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SELECT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_SELECT = TMP_AWS_DYNAMODB_SELECT;\n/**\n * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES;\n/**\n * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES;\n/**\n * The value of the `ExclusiveStartTableName` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_EXCLUSIVE_START_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE;\n/**\n * The the number of items in the `TableNames` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TABLE_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_TABLE_COUNT = TMP_AWS_DYNAMODB_TABLE_COUNT;\n/**\n * The value of the `ScanIndexForward` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SCAN_FORWARD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD = TMP_AWS_DYNAMODB_SCAN_FORWARD;\n/**\n * The value of the `Segment` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SEGMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_SEGMENT = TMP_AWS_DYNAMODB_SEGMENT;\n/**\n * The value of the `TotalSegments` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TOTAL_SEGMENTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS = TMP_AWS_DYNAMODB_TOTAL_SEGMENTS;\n/**\n * The value of the `Count` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_COUNT = TMP_AWS_DYNAMODB_COUNT;\n/**\n * The value of the `ScannedCount` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SCANNED_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT = TMP_AWS_DYNAMODB_SCANNED_COUNT;\n/**\n * The JSON-serialized value of each item in the `AttributeDefinitions` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS;\n/**\n * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES;\n/**\n * A string identifying the messaging system.\n *\n * @deprecated Use ATTR_MESSAGING_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_SYSTEM = TMP_MESSAGING_SYSTEM;\n/**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_DESTINATION = TMP_MESSAGING_DESTINATION;\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport var SEMATTRS_MESSAGING_DESTINATION_KIND = TMP_MESSAGING_DESTINATION_KIND;\n/**\n * A boolean that is true if the message destination is temporary.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_TEMPORARY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_TEMP_DESTINATION = TMP_MESSAGING_TEMP_DESTINATION;\n/**\n * The name of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME.\n */\nexport var SEMATTRS_MESSAGING_PROTOCOL = TMP_MESSAGING_PROTOCOL;\n/**\n * The version of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION.\n */\nexport var SEMATTRS_MESSAGING_PROTOCOL_VERSION = TMP_MESSAGING_PROTOCOL_VERSION;\n/**\n * Connection string.\n *\n * @deprecated Removed in semconv v1.17.0.\n */\nexport var SEMATTRS_MESSAGING_URL = TMP_MESSAGING_URL;\n/**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_MESSAGE_ID = TMP_MESSAGING_MESSAGE_ID;\n/**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called &#34;Correlation ID&#34;.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_CONVERSATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_CONVERSATION_ID = TMP_MESSAGING_CONVERSATION_ID;\n/**\n * The (uncompressed) size of the message payload in bytes. Also use this attribute if it is unknown whether the compressed or uncompressed payload size is reported.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_BODY_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES;\n/**\n * The compressed size of the message payload in bytes.\n *\n * @deprecated Removed in semconv v1.22.0.\n */\nexport var SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES;\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is &#34;send&#34;, this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use ATTR_MESSAGING_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_OPERATION = TMP_MESSAGING_OPERATION;\n/**\n * The identifier for the consumer receiving a message. For Kafka, set it to `{messaging.kafka.consumer_group} - {messaging.kafka.client_id}`, if both are present, or only `messaging.kafka.consumer_group`. For brokers, such as RabbitMQ and Artemis, set it to the `client_id` of the client consuming the message.\n *\n * @deprecated Removed in semconv v1.21.0.\n */\nexport var SEMATTRS_MESSAGING_CONSUMER_ID = TMP_MESSAGING_CONSUMER_ID;\n/**\n * RabbitMQ message routing key.\n *\n * @deprecated Use ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY = TMP_MESSAGING_RABBITMQ_ROUTING_KEY;\n/**\n * Message keys in Kafka are used for grouping alike messages to ensure they&#39;re processed on the same partition. They differ from `messaging.message_id` in that they&#39;re not unique. If the key is `null`, the attribute MUST NOT be set.\n *\n * Note: If the key type is not string, it&#39;s string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don&#39;t include its value.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_MESSAGE_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY = TMP_MESSAGING_KAFKA_MESSAGE_KEY;\n/**\n * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_CONSUMER_GROUP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP = TMP_MESSAGING_KAFKA_CONSUMER_GROUP;\n/**\n * Client Id for the Consumer or Producer that is handling the message.\n *\n * @deprecated Use ATTR_MESSAGING_CLIENT_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_KAFKA_CLIENT_ID = TMP_MESSAGING_KAFKA_CLIENT_ID;\n/**\n * Partition the message is sent to.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_DESTINATION_PARTITION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_KAFKA_PARTITION = TMP_MESSAGING_KAFKA_PARTITION;\n/**\n * A boolean that is true if the message is a tombstone.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_KAFKA_TOMBSTONE = TMP_MESSAGING_KAFKA_TOMBSTONE;\n/**\n * A string identifying the remoting system.\n *\n * @deprecated Use ATTR_RPC_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_SYSTEM = TMP_RPC_SYSTEM;\n/**\n * The full (logical) name of the service being called, including its package name, if applicable.\n *\n * Note: This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.namespace` attribute may be used to store the latter (despite the attribute name, it may include a class name; e.g., class with method actually executing the call on the server side, RPC client stub class on the client side).\n *\n * @deprecated Use ATTR_RPC_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_SERVICE = TMP_RPC_SERVICE;\n/**\n * The name of the (logical) method being called, must be equal to the $method part in the span name.\n *\n * Note: This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function` attribute may be used to store the latter (e.g., method actually executing the call on the server side, RPC client stub method on the client side).\n *\n * @deprecated Use ATTR_RPC_METHOD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_METHOD = TMP_RPC_METHOD;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use ATTR_RPC_GRPC_STATUS_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_GRPC_STATUS_CODE = TMP_RPC_GRPC_STATUS_CODE;\n/**\n * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_JSONRPC_VERSION = TMP_RPC_JSONRPC_VERSION;\n/**\n * `id` property of request or response. Since protocol allows id to be int, string, `null` or missing (for notifications), value is expected to be cast to string for simplicity. Use empty string in case of `null` value. Omit entirely if this is a notification.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_REQUEST_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_JSONRPC_REQUEST_ID = TMP_RPC_JSONRPC_REQUEST_ID;\n/**\n * `error.code` property of response if it is an error response.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_ERROR_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_JSONRPC_ERROR_CODE = TMP_RPC_JSONRPC_ERROR_CODE;\n/**\n * `error.message` property of response if it is an error response.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_ERROR_MESSAGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE = TMP_RPC_JSONRPC_ERROR_MESSAGE;\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use ATTR_MESSAGE_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGE_TYPE = TMP_MESSAGE_TYPE;\n/**\n * MUST be calculated as two different counters starting from `1` one for sent messages and one for received message.\n *\n * Note: This way we guarantee that the values will be consistent between different implementations.\n *\n * @deprecated Use ATTR_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGE_ID = TMP_MESSAGE_ID;\n/**\n * Compressed size of the message in bytes.\n *\n * @deprecated Use ATTR_MESSAGE_COMPRESSED_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGE_COMPRESSED_SIZE = TMP_MESSAGE_COMPRESSED_SIZE;\n/**\n * Uncompressed size of the message in bytes.\n *\n * @deprecated Use ATTR_MESSAGE_UNCOMPRESSED_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE = TMP_MESSAGE_UNCOMPRESSED_SIZE;\n/**\n * Create exported Value Map for SemanticAttributes values\n * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification\n */\nexport var SemanticAttributes = \n/*#__PURE__*/ createConstMap([\n    TMP_AWS_LAMBDA_INVOKED_ARN,\n    TMP_DB_SYSTEM,\n    TMP_DB_CONNECTION_STRING,\n    TMP_DB_USER,\n    TMP_DB_JDBC_DRIVER_CLASSNAME,\n    TMP_DB_NAME,\n    TMP_DB_STATEMENT,\n    TMP_DB_OPERATION,\n    TMP_DB_MSSQL_INSTANCE_NAME,\n    TMP_DB_CASSANDRA_KEYSPACE,\n    TMP_DB_CASSANDRA_PAGE_SIZE,\n    TMP_DB_CASSANDRA_CONSISTENCY_LEVEL,\n    TMP_DB_CASSANDRA_TABLE,\n    TMP_DB_CASSANDRA_IDEMPOTENCE,\n    TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT,\n    TMP_DB_CASSANDRA_COORDINATOR_ID,\n    TMP_DB_CASSANDRA_COORDINATOR_DC,\n    TMP_DB_HBASE_NAMESPACE,\n    TMP_DB_REDIS_DATABASE_INDEX,\n    TMP_DB_MONGODB_COLLECTION,\n    TMP_DB_SQL_TABLE,\n    TMP_EXCEPTION_TYPE,\n    TMP_EXCEPTION_MESSAGE,\n    TMP_EXCEPTION_STACKTRACE,\n    TMP_EXCEPTION_ESCAPED,\n    TMP_FAAS_TRIGGER,\n    TMP_FAAS_EXECUTION,\n    TMP_FAAS_DOCUMENT_COLLECTION,\n    TMP_FAAS_DOCUMENT_OPERATION,\n    TMP_FAAS_DOCUMENT_TIME,\n    TMP_FAAS_DOCUMENT_NAME,\n    TMP_FAAS_TIME,\n    TMP_FAAS_CRON,\n    TMP_FAAS_COLDSTART,\n    TMP_FAAS_INVOKED_NAME,\n    TMP_FAAS_INVOKED_PROVIDER,\n    TMP_FAAS_INVOKED_REGION,\n    TMP_NET_TRANSPORT,\n    TMP_NET_PEER_IP,\n    TMP_NET_PEER_PORT,\n    TMP_NET_PEER_NAME,\n    TMP_NET_HOST_IP,\n    TMP_NET_HOST_PORT,\n    TMP_NET_HOST_NAME,\n    TMP_NET_HOST_CONNECTION_TYPE,\n    TMP_NET_HOST_CONNECTION_SUBTYPE,\n    TMP_NET_HOST_CARRIER_NAME,\n    TMP_NET_HOST_CARRIER_MCC,\n    TMP_NET_HOST_CARRIER_MNC,\n    TMP_NET_HOST_CARRIER_ICC,\n    TMP_PEER_SERVICE,\n    TMP_ENDUSER_ID,\n    TMP_ENDUSER_ROLE,\n    TMP_ENDUSER_SCOPE,\n    TMP_THREAD_ID,\n    TMP_THREAD_NAME,\n    TMP_CODE_FUNCTION,\n    TMP_CODE_NAMESPACE,\n    TMP_CODE_FILEPATH,\n    TMP_CODE_LINENO,\n    TMP_HTTP_METHOD,\n    TMP_HTTP_URL,\n    TMP_HTTP_TARGET,\n    TMP_HTTP_HOST,\n    TMP_HTTP_SCHEME,\n    TMP_HTTP_STATUS_CODE,\n    TMP_HTTP_FLAVOR,\n    TMP_HTTP_USER_AGENT,\n    TMP_HTTP_REQUEST_CONTENT_LENGTH,\n    TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED,\n    TMP_HTTP_RESPONSE_CONTENT_LENGTH,\n    TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED,\n    TMP_HTTP_SERVER_NAME,\n    TMP_HTTP_ROUTE,\n    TMP_HTTP_CLIENT_IP,\n    TMP_AWS_DYNAMODB_TABLE_NAMES,\n    TMP_AWS_DYNAMODB_CONSUMED_CAPACITY,\n    TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS,\n    TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY,\n    TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY,\n    TMP_AWS_DYNAMODB_CONSISTENT_READ,\n    TMP_AWS_DYNAMODB_PROJECTION,\n    TMP_AWS_DYNAMODB_LIMIT,\n    TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET,\n    TMP_AWS_DYNAMODB_INDEX_NAME,\n    TMP_AWS_DYNAMODB_SELECT,\n    TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES,\n    TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES,\n    TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE,\n    TMP_AWS_DYNAMODB_TABLE_COUNT,\n    TMP_AWS_DYNAMODB_SCAN_FORWARD,\n    TMP_AWS_DYNAMODB_SEGMENT,\n    TMP_AWS_DYNAMODB_TOTAL_SEGMENTS,\n    TMP_AWS_DYNAMODB_COUNT,\n    TMP_AWS_DYNAMODB_SCANNED_COUNT,\n    TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS,\n    TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES,\n    TMP_MESSAGING_SYSTEM,\n    TMP_MESSAGING_DESTINATION,\n    TMP_MESSAGING_DESTINATION_KIND,\n    TMP_MESSAGING_TEMP_DESTINATION,\n    TMP_MESSAGING_PROTOCOL,\n    TMP_MESSAGING_PROTOCOL_VERSION,\n    TMP_MESSAGING_URL,\n    TMP_MESSAGING_MESSAGE_ID,\n    TMP_MESSAGING_CONVERSATION_ID,\n    TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES,\n    TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES,\n    TMP_MESSAGING_OPERATION,\n    TMP_MESSAGING_CONSUMER_ID,\n    TMP_MESSAGING_RABBITMQ_ROUTING_KEY,\n    TMP_MESSAGING_KAFKA_MESSAGE_KEY,\n    TMP_MESSAGING_KAFKA_CONSUMER_GROUP,\n    TMP_MESSAGING_KAFKA_CLIENT_ID,\n    TMP_MESSAGING_KAFKA_PARTITION,\n    TMP_MESSAGING_KAFKA_TOMBSTONE,\n    TMP_RPC_SYSTEM,\n    TMP_RPC_SERVICE,\n    TMP_RPC_METHOD,\n    TMP_RPC_GRPC_STATUS_CODE,\n    TMP_RPC_JSONRPC_VERSION,\n    TMP_RPC_JSONRPC_REQUEST_ID,\n    TMP_RPC_JSONRPC_ERROR_CODE,\n    TMP_RPC_JSONRPC_ERROR_MESSAGE,\n    TMP_MESSAGE_TYPE,\n    TMP_MESSAGE_ID,\n    TMP_MESSAGE_COMPRESSED_SIZE,\n    TMP_MESSAGE_UNCOMPRESSED_SIZE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for DbSystemValues enum definition\n *\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_DBSYSTEMVALUES_OTHER_SQL = 'other_sql';\nvar TMP_DBSYSTEMVALUES_MSSQL = 'mssql';\nvar TMP_DBSYSTEMVALUES_MYSQL = 'mysql';\nvar TMP_DBSYSTEMVALUES_ORACLE = 'oracle';\nvar TMP_DBSYSTEMVALUES_DB2 = 'db2';\nvar TMP_DBSYSTEMVALUES_POSTGRESQL = 'postgresql';\nvar TMP_DBSYSTEMVALUES_REDSHIFT = 'redshift';\nvar TMP_DBSYSTEMVALUES_HIVE = 'hive';\nvar TMP_DBSYSTEMVALUES_CLOUDSCAPE = 'cloudscape';\nvar TMP_DBSYSTEMVALUES_HSQLDB = 'hsqldb';\nvar TMP_DBSYSTEMVALUES_PROGRESS = 'progress';\nvar TMP_DBSYSTEMVALUES_MAXDB = 'maxdb';\nvar TMP_DBSYSTEMVALUES_HANADB = 'hanadb';\nvar TMP_DBSYSTEMVALUES_INGRES = 'ingres';\nvar TMP_DBSYSTEMVALUES_FIRSTSQL = 'firstsql';\nvar TMP_DBSYSTEMVALUES_EDB = 'edb';\nvar TMP_DBSYSTEMVALUES_CACHE = 'cache';\nvar TMP_DBSYSTEMVALUES_ADABAS = 'adabas';\nvar TMP_DBSYSTEMVALUES_FIREBIRD = 'firebird';\nvar TMP_DBSYSTEMVALUES_DERBY = 'derby';\nvar TMP_DBSYSTEMVALUES_FILEMAKER = 'filemaker';\nvar TMP_DBSYSTEMVALUES_INFORMIX = 'informix';\nvar TMP_DBSYSTEMVALUES_INSTANTDB = 'instantdb';\nvar TMP_DBSYSTEMVALUES_INTERBASE = 'interbase';\nvar TMP_DBSYSTEMVALUES_MARIADB = 'mariadb';\nvar TMP_DBSYSTEMVALUES_NETEZZA = 'netezza';\nvar TMP_DBSYSTEMVALUES_PERVASIVE = 'pervasive';\nvar TMP_DBSYSTEMVALUES_POINTBASE = 'pointbase';\nvar TMP_DBSYSTEMVALUES_SQLITE = 'sqlite';\nvar TMP_DBSYSTEMVALUES_SYBASE = 'sybase';\nvar TMP_DBSYSTEMVALUES_TERADATA = 'teradata';\nvar TMP_DBSYSTEMVALUES_VERTICA = 'vertica';\nvar TMP_DBSYSTEMVALUES_H2 = 'h2';\nvar TMP_DBSYSTEMVALUES_COLDFUSION = 'coldfusion';\nvar TMP_DBSYSTEMVALUES_CASSANDRA = 'cassandra';\nvar TMP_DBSYSTEMVALUES_HBASE = 'hbase';\nvar TMP_DBSYSTEMVALUES_MONGODB = 'mongodb';\nvar TMP_DBSYSTEMVALUES_REDIS = 'redis';\nvar TMP_DBSYSTEMVALUES_COUCHBASE = 'couchbase';\nvar TMP_DBSYSTEMVALUES_COUCHDB = 'couchdb';\nvar TMP_DBSYSTEMVALUES_COSMOSDB = 'cosmosdb';\nvar TMP_DBSYSTEMVALUES_DYNAMODB = 'dynamodb';\nvar TMP_DBSYSTEMVALUES_NEO4J = 'neo4j';\nvar TMP_DBSYSTEMVALUES_GEODE = 'geode';\nvar TMP_DBSYSTEMVALUES_ELASTICSEARCH = 'elasticsearch';\nvar TMP_DBSYSTEMVALUES_MEMCACHED = 'memcached';\nvar TMP_DBSYSTEMVALUES_COCKROACHDB = 'cockroachdb';\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_OTHER_SQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_OTHER_SQL = TMP_DBSYSTEMVALUES_OTHER_SQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MSSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_MSSQL = TMP_DBSYSTEMVALUES_MSSQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MYSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_MYSQL = TMP_DBSYSTEMVALUES_MYSQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ORACLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_ORACLE = TMP_DBSYSTEMVALUES_ORACLE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DB2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_DB2 = TMP_DBSYSTEMVALUES_DB2;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_POSTGRESQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_POSTGRESQL = TMP_DBSYSTEMVALUES_POSTGRESQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_REDSHIFT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_REDSHIFT = TMP_DBSYSTEMVALUES_REDSHIFT;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_HIVE = TMP_DBSYSTEMVALUES_HIVE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CLOUDSCAPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_CLOUDSCAPE = TMP_DBSYSTEMVALUES_CLOUDSCAPE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HSQLDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_HSQLDB = TMP_DBSYSTEMVALUES_HSQLDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_PROGRESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_PROGRESS = TMP_DBSYSTEMVALUES_PROGRESS;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MAXDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_MAXDB = TMP_DBSYSTEMVALUES_MAXDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HANADB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_HANADB = TMP_DBSYSTEMVALUES_HANADB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INGRES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_INGRES = TMP_DBSYSTEMVALUES_INGRES;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FIRSTSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_FIRSTSQL = TMP_DBSYSTEMVALUES_FIRSTSQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_EDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_EDB = TMP_DBSYSTEMVALUES_EDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CACHE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_CACHE = TMP_DBSYSTEMVALUES_CACHE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ADABAS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_ADABAS = TMP_DBSYSTEMVALUES_ADABAS;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FIREBIRD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_FIREBIRD = TMP_DBSYSTEMVALUES_FIREBIRD;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DERBY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_DERBY = TMP_DBSYSTEMVALUES_DERBY;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FILEMAKER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_FILEMAKER = TMP_DBSYSTEMVALUES_FILEMAKER;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INFORMIX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_INFORMIX = TMP_DBSYSTEMVALUES_INFORMIX;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INSTANTDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_INSTANTDB = TMP_DBSYSTEMVALUES_INSTANTDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INTERBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_INTERBASE = TMP_DBSYSTEMVALUES_INTERBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MARIADB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_MARIADB = TMP_DBSYSTEMVALUES_MARIADB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_NETEZZA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_NETEZZA = TMP_DBSYSTEMVALUES_NETEZZA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_PERVASIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_PERVASIVE = TMP_DBSYSTEMVALUES_PERVASIVE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_POINTBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_POINTBASE = TMP_DBSYSTEMVALUES_POINTBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_SQLITE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_SQLITE = TMP_DBSYSTEMVALUES_SQLITE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_SYBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_SYBASE = TMP_DBSYSTEMVALUES_SYBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_TERADATA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_TERADATA = TMP_DBSYSTEMVALUES_TERADATA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_VERTICA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_VERTICA = TMP_DBSYSTEMVALUES_VERTICA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_H2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_H2 = TMP_DBSYSTEMVALUES_H2;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COLDFUSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_COLDFUSION = TMP_DBSYSTEMVALUES_COLDFUSION;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CASSANDRA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_CASSANDRA = TMP_DBSYSTEMVALUES_CASSANDRA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_HBASE = TMP_DBSYSTEMVALUES_HBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MONGODB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_MONGODB = TMP_DBSYSTEMVALUES_MONGODB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_REDIS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_REDIS = TMP_DBSYSTEMVALUES_REDIS;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COUCHBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_COUCHBASE = TMP_DBSYSTEMVALUES_COUCHBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COUCHDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_COUCHDB = TMP_DBSYSTEMVALUES_COUCHDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COSMOSDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_COSMOSDB = TMP_DBSYSTEMVALUES_COSMOSDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DYNAMODB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_DYNAMODB = TMP_DBSYSTEMVALUES_DYNAMODB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_NEO4J in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_NEO4J = TMP_DBSYSTEMVALUES_NEO4J;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_GEODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_GEODE = TMP_DBSYSTEMVALUES_GEODE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ELASTICSEARCH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_ELASTICSEARCH = TMP_DBSYSTEMVALUES_ELASTICSEARCH;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MEMCACHED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_MEMCACHED = TMP_DBSYSTEMVALUES_MEMCACHED;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COCKROACHDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_COCKROACHDB = TMP_DBSYSTEMVALUES_COCKROACHDB;\n/**\n * The constant map of values for DbSystemValues.\n * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification.\n */\nexport var DbSystemValues = \n/*#__PURE__*/ createConstMap([\n    TMP_DBSYSTEMVALUES_OTHER_SQL,\n    TMP_DBSYSTEMVALUES_MSSQL,\n    TMP_DBSYSTEMVALUES_MYSQL,\n    TMP_DBSYSTEMVALUES_ORACLE,\n    TMP_DBSYSTEMVALUES_DB2,\n    TMP_DBSYSTEMVALUES_POSTGRESQL,\n    TMP_DBSYSTEMVALUES_REDSHIFT,\n    TMP_DBSYSTEMVALUES_HIVE,\n    TMP_DBSYSTEMVALUES_CLOUDSCAPE,\n    TMP_DBSYSTEMVALUES_HSQLDB,\n    TMP_DBSYSTEMVALUES_PROGRESS,\n    TMP_DBSYSTEMVALUES_MAXDB,\n    TMP_DBSYSTEMVALUES_HANADB,\n    TMP_DBSYSTEMVALUES_INGRES,\n    TMP_DBSYSTEMVALUES_FIRSTSQL,\n    TMP_DBSYSTEMVALUES_EDB,\n    TMP_DBSYSTEMVALUES_CACHE,\n    TMP_DBSYSTEMVALUES_ADABAS,\n    TMP_DBSYSTEMVALUES_FIREBIRD,\n    TMP_DBSYSTEMVALUES_DERBY,\n    TMP_DBSYSTEMVALUES_FILEMAKER,\n    TMP_DBSYSTEMVALUES_INFORMIX,\n    TMP_DBSYSTEMVALUES_INSTANTDB,\n    TMP_DBSYSTEMVALUES_INTERBASE,\n    TMP_DBSYSTEMVALUES_MARIADB,\n    TMP_DBSYSTEMVALUES_NETEZZA,\n    TMP_DBSYSTEMVALUES_PERVASIVE,\n    TMP_DBSYSTEMVALUES_POINTBASE,\n    TMP_DBSYSTEMVALUES_SQLITE,\n    TMP_DBSYSTEMVALUES_SYBASE,\n    TMP_DBSYSTEMVALUES_TERADATA,\n    TMP_DBSYSTEMVALUES_VERTICA,\n    TMP_DBSYSTEMVALUES_H2,\n    TMP_DBSYSTEMVALUES_COLDFUSION,\n    TMP_DBSYSTEMVALUES_CASSANDRA,\n    TMP_DBSYSTEMVALUES_HBASE,\n    TMP_DBSYSTEMVALUES_MONGODB,\n    TMP_DBSYSTEMVALUES_REDIS,\n    TMP_DBSYSTEMVALUES_COUCHBASE,\n    TMP_DBSYSTEMVALUES_COUCHDB,\n    TMP_DBSYSTEMVALUES_COSMOSDB,\n    TMP_DBSYSTEMVALUES_DYNAMODB,\n    TMP_DBSYSTEMVALUES_NEO4J,\n    TMP_DBSYSTEMVALUES_GEODE,\n    TMP_DBSYSTEMVALUES_ELASTICSEARCH,\n    TMP_DBSYSTEMVALUES_MEMCACHED,\n    TMP_DBSYSTEMVALUES_COCKROACHDB,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for DbCassandraConsistencyLevelValues enum definition\n *\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL = 'all';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = 'each_quorum';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = 'quorum';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = 'local_quorum';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE = 'one';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO = 'two';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE = 'three';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = 'local_one';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY = 'any';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = 'serial';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = 'local_serial';\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_ALL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_ONE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_TWO = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_THREE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_ANY = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL;\n/**\n * The constant map of values for DbCassandraConsistencyLevelValues.\n * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification.\n */\nexport var DbCassandraConsistencyLevelValues = \n/*#__PURE__*/ createConstMap([\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasTriggerValues enum definition\n *\n * Type of the trigger on which the function is executed.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_FAASTRIGGERVALUES_DATASOURCE = 'datasource';\nvar TMP_FAASTRIGGERVALUES_HTTP = 'http';\nvar TMP_FAASTRIGGERVALUES_PUBSUB = 'pubsub';\nvar TMP_FAASTRIGGERVALUES_TIMER = 'timer';\nvar TMP_FAASTRIGGERVALUES_OTHER = 'other';\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_DATASOURCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASTRIGGERVALUES_DATASOURCE = TMP_FAASTRIGGERVALUES_DATASOURCE;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_HTTP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASTRIGGERVALUES_HTTP = TMP_FAASTRIGGERVALUES_HTTP;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_PUBSUB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASTRIGGERVALUES_PUBSUB = TMP_FAASTRIGGERVALUES_PUBSUB;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_TIMER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASTRIGGERVALUES_TIMER = TMP_FAASTRIGGERVALUES_TIMER;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_OTHER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASTRIGGERVALUES_OTHER = TMP_FAASTRIGGERVALUES_OTHER;\n/**\n * The constant map of values for FaasTriggerValues.\n * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification.\n */\nexport var FaasTriggerValues = \n/*#__PURE__*/ createConstMap([\n    TMP_FAASTRIGGERVALUES_DATASOURCE,\n    TMP_FAASTRIGGERVALUES_HTTP,\n    TMP_FAASTRIGGERVALUES_PUBSUB,\n    TMP_FAASTRIGGERVALUES_TIMER,\n    TMP_FAASTRIGGERVALUES_OTHER,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasDocumentOperationValues enum definition\n *\n * Describes the type of the operation that was performed on the data.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_FAASDOCUMENTOPERATIONVALUES_INSERT = 'insert';\nvar TMP_FAASDOCUMENTOPERATIONVALUES_EDIT = 'edit';\nvar TMP_FAASDOCUMENTOPERATIONVALUES_DELETE = 'delete';\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_INSERT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASDOCUMENTOPERATIONVALUES_INSERT = TMP_FAASDOCUMENTOPERATIONVALUES_INSERT;\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_EDIT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASDOCUMENTOPERATIONVALUES_EDIT = TMP_FAASDOCUMENTOPERATIONVALUES_EDIT;\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_DELETE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASDOCUMENTOPERATIONVALUES_DELETE = TMP_FAASDOCUMENTOPERATIONVALUES_DELETE;\n/**\n * The constant map of values for FaasDocumentOperationValues.\n * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification.\n */\nexport var FaasDocumentOperationValues = \n/*#__PURE__*/ createConstMap([\n    TMP_FAASDOCUMENTOPERATIONVALUES_INSERT,\n    TMP_FAASDOCUMENTOPERATIONVALUES_EDIT,\n    TMP_FAASDOCUMENTOPERATIONVALUES_DELETE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasInvokedProviderValues enum definition\n *\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud';\nvar TMP_FAASINVOKEDPROVIDERVALUES_AWS = 'aws';\nvar TMP_FAASINVOKEDPROVIDERVALUES_AZURE = 'azure';\nvar TMP_FAASINVOKEDPROVIDERVALUES_GCP = 'gcp';\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_ALIBABA_CLOUD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_AWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASINVOKEDPROVIDERVALUES_AWS = TMP_FAASINVOKEDPROVIDERVALUES_AWS;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_AZURE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASINVOKEDPROVIDERVALUES_AZURE = TMP_FAASINVOKEDPROVIDERVALUES_AZURE;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_GCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASINVOKEDPROVIDERVALUES_GCP = TMP_FAASINVOKEDPROVIDERVALUES_GCP;\n/**\n * The constant map of values for FaasInvokedProviderValues.\n * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification.\n */\nexport var FaasInvokedProviderValues = \n/*#__PURE__*/ createConstMap([\n    TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD,\n    TMP_FAASINVOKEDPROVIDERVALUES_AWS,\n    TMP_FAASINVOKEDPROVIDERVALUES_AZURE,\n    TMP_FAASINVOKEDPROVIDERVALUES_GCP,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetTransportValues enum definition\n *\n * Transport protocol used. See note below.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_NETTRANSPORTVALUES_IP_TCP = 'ip_tcp';\nvar TMP_NETTRANSPORTVALUES_IP_UDP = 'ip_udp';\nvar TMP_NETTRANSPORTVALUES_IP = 'ip';\nvar TMP_NETTRANSPORTVALUES_UNIX = 'unix';\nvar TMP_NETTRANSPORTVALUES_PIPE = 'pipe';\nvar TMP_NETTRANSPORTVALUES_INPROC = 'inproc';\nvar TMP_NETTRANSPORTVALUES_OTHER = 'other';\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_IP_TCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETTRANSPORTVALUES_IP_TCP = TMP_NETTRANSPORTVALUES_IP_TCP;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_IP_UDP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETTRANSPORTVALUES_IP_UDP = TMP_NETTRANSPORTVALUES_IP_UDP;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexport var NETTRANSPORTVALUES_IP = TMP_NETTRANSPORTVALUES_IP;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexport var NETTRANSPORTVALUES_UNIX = TMP_NETTRANSPORTVALUES_UNIX;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_PIPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETTRANSPORTVALUES_PIPE = TMP_NETTRANSPORTVALUES_PIPE;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_INPROC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETTRANSPORTVALUES_INPROC = TMP_NETTRANSPORTVALUES_INPROC;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_OTHER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETTRANSPORTVALUES_OTHER = TMP_NETTRANSPORTVALUES_OTHER;\n/**\n * The constant map of values for NetTransportValues.\n * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification.\n */\nexport var NetTransportValues = \n/*#__PURE__*/ createConstMap([\n    TMP_NETTRANSPORTVALUES_IP_TCP,\n    TMP_NETTRANSPORTVALUES_IP_UDP,\n    TMP_NETTRANSPORTVALUES_IP,\n    TMP_NETTRANSPORTVALUES_UNIX,\n    TMP_NETTRANSPORTVALUES_PIPE,\n    TMP_NETTRANSPORTVALUES_INPROC,\n    TMP_NETTRANSPORTVALUES_OTHER,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionTypeValues enum definition\n *\n * The internet connection type currently being used by the host.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI = 'wifi';\nvar TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED = 'wired';\nvar TMP_NETHOSTCONNECTIONTYPEVALUES_CELL = 'cell';\nvar TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = 'unavailable';\nvar TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = 'unknown';\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_WIFI in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONTYPEVALUES_WIFI = TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_WIRED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONTYPEVALUES_WIRED = TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_CELL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONTYPEVALUES_CELL = TMP_NETHOSTCONNECTIONTYPEVALUES_CELL;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_UNAVAILABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_UNKNOWN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN;\n/**\n * The constant map of values for NetHostConnectionTypeValues.\n * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification.\n */\nexport var NetHostConnectionTypeValues = \n/*#__PURE__*/ createConstMap([\n    TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI,\n    TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED,\n    TMP_NETHOSTCONNECTIONTYPEVALUES_CELL,\n    TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE,\n    TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionSubtypeValues enum definition\n *\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = 'gprs';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = 'edge';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = 'umts';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = 'cdma';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = 'evdo_0';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = 'evdo_a';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = 'cdma2000_1xrtt';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = 'hsdpa';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = 'hsupa';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = 'hspa';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = 'iden';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = 'evdo_b';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE = 'lte';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = 'ehrpd';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = 'hspap';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM = 'gsm';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = 'td_scdma';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = 'iwlan';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR = 'nr';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = 'nrnsa';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = 'lte_ca';\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_GPRS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EDGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_UMTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_A in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA2000_1XRTT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSDPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSUPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_IDEN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_B in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_LTE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_LTE = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EHRPD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSPAP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_GSM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_GSM = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_TD_SCDMA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_IWLAN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_NR in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_NR = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_NRNSA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_LTE_CA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA;\n/**\n * The constant map of values for NetHostConnectionSubtypeValues.\n * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification.\n */\nexport var NetHostConnectionSubtypeValues = \n/*#__PURE__*/ createConstMap([\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HttpFlavorValues enum definition\n *\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_HTTPFLAVORVALUES_HTTP_1_0 = '1.0';\nvar TMP_HTTPFLAVORVALUES_HTTP_1_1 = '1.1';\nvar TMP_HTTPFLAVORVALUES_HTTP_2_0 = '2.0';\nvar TMP_HTTPFLAVORVALUES_SPDY = 'SPDY';\nvar TMP_HTTPFLAVORVALUES_QUIC = 'QUIC';\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_1_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HTTPFLAVORVALUES_HTTP_1_0 = TMP_HTTPFLAVORVALUES_HTTP_1_0;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_1_1 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HTTPFLAVORVALUES_HTTP_1_1 = TMP_HTTPFLAVORVALUES_HTTP_1_1;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_2_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HTTPFLAVORVALUES_HTTP_2_0 = TMP_HTTPFLAVORVALUES_HTTP_2_0;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_SPDY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HTTPFLAVORVALUES_SPDY = TMP_HTTPFLAVORVALUES_SPDY;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_QUIC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HTTPFLAVORVALUES_QUIC = TMP_HTTPFLAVORVALUES_QUIC;\n/**\n * The constant map of values for HttpFlavorValues.\n * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification.\n */\nexport var HttpFlavorValues = {\n    HTTP_1_0: TMP_HTTPFLAVORVALUES_HTTP_1_0,\n    HTTP_1_1: TMP_HTTPFLAVORVALUES_HTTP_1_1,\n    HTTP_2_0: TMP_HTTPFLAVORVALUES_HTTP_2_0,\n    SPDY: TMP_HTTPFLAVORVALUES_SPDY,\n    QUIC: TMP_HTTPFLAVORVALUES_QUIC,\n};\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingDestinationKindValues enum definition\n *\n * The kind of message destination.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE = 'queue';\nvar TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC = 'topic';\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport var MESSAGINGDESTINATIONKINDVALUES_QUEUE = TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE;\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport var MESSAGINGDESTINATIONKINDVALUES_TOPIC = TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC;\n/**\n * The constant map of values for MessagingDestinationKindValues.\n * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification.\n */\nexport var MessagingDestinationKindValues = \n/*#__PURE__*/ createConstMap([\n    TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE,\n    TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingOperationValues enum definition\n *\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is &#34;send&#34;, this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_MESSAGINGOPERATIONVALUES_RECEIVE = 'receive';\nvar TMP_MESSAGINGOPERATIONVALUES_PROCESS = 'process';\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is &#34;send&#34;, this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_RECEIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var MESSAGINGOPERATIONVALUES_RECEIVE = TMP_MESSAGINGOPERATIONVALUES_RECEIVE;\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is &#34;send&#34;, this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_PROCESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var MESSAGINGOPERATIONVALUES_PROCESS = TMP_MESSAGINGOPERATIONVALUES_PROCESS;\n/**\n * The constant map of values for MessagingOperationValues.\n * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification.\n */\nexport var MessagingOperationValues = \n/*#__PURE__*/ createConstMap([\n    TMP_MESSAGINGOPERATIONVALUES_RECEIVE,\n    TMP_MESSAGINGOPERATIONVALUES_PROCESS,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for RpcGrpcStatusCodeValues enum definition\n *\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_RPCGRPCSTATUSCODEVALUES_OK = 0;\nvar TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED = 1;\nvar TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN = 2;\nvar TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = 3;\nvar TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = 4;\nvar TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND = 5;\nvar TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = 6;\nvar TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = 7;\nvar TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = 8;\nvar TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = 9;\nvar TMP_RPCGRPCSTATUSCODEVALUES_ABORTED = 10;\nvar TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = 11;\nvar TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = 12;\nvar TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL = 13;\nvar TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = 14;\nvar TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS = 15;\nvar TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = 16;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_OK in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_OK = TMP_RPCGRPCSTATUSCODEVALUES_OK;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_CANCELLED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_CANCELLED = TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNKNOWN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_UNKNOWN = TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_INVALID_ARGUMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_DEADLINE_EXCEEDED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_NOT_FOUND in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_NOT_FOUND = TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_ALREADY_EXISTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_PERMISSION_DENIED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_RESOURCE_EXHAUSTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_FAILED_PRECONDITION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_ABORTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_ABORTED = TMP_RPCGRPCSTATUSCODEVALUES_ABORTED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_OUT_OF_RANGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNIMPLEMENTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_INTERNAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_INTERNAL = TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNAVAILABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_DATA_LOSS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_DATA_LOSS = TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNAUTHENTICATED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED;\n/**\n * The constant map of values for RpcGrpcStatusCodeValues.\n * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification.\n */\nexport var RpcGrpcStatusCodeValues = {\n    OK: TMP_RPCGRPCSTATUSCODEVALUES_OK,\n    CANCELLED: TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED,\n    UNKNOWN: TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN,\n    INVALID_ARGUMENT: TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT,\n    DEADLINE_EXCEEDED: TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED,\n    NOT_FOUND: TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND,\n    ALREADY_EXISTS: TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS,\n    PERMISSION_DENIED: TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED,\n    RESOURCE_EXHAUSTED: TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED,\n    FAILED_PRECONDITION: TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION,\n    ABORTED: TMP_RPCGRPCSTATUSCODEVALUES_ABORTED,\n    OUT_OF_RANGE: TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE,\n    UNIMPLEMENTED: TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED,\n    INTERNAL: TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL,\n    UNAVAILABLE: TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE,\n    DATA_LOSS: TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS,\n    UNAUTHENTICATED: TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED,\n};\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessageTypeValues enum definition\n *\n * Whether this is a received or sent message.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_MESSAGETYPEVALUES_SENT = 'SENT';\nvar TMP_MESSAGETYPEVALUES_RECEIVED = 'RECEIVED';\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use MESSAGE_TYPE_VALUE_SENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var MESSAGETYPEVALUES_SENT = TMP_MESSAGETYPEVALUES_SENT;\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use MESSAGE_TYPE_VALUE_RECEIVED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var MESSAGETYPEVALUES_RECEIVED = TMP_MESSAGETYPEVALUES_RECEIVED;\n/**\n * The constant map of values for MessageTypeValues.\n * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification.\n */\nexport var MessageTypeValues = \n/*#__PURE__*/ createConstMap([\n    TMP_MESSAGETYPEVALUES_SENT,\n    TMP_MESSAGETYPEVALUES_RECEIVED,\n]);\n//# sourceMappingURL=SemanticAttributes.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only one-level deep at this point,\n * and should not cause problems for tree-shakers.\n */\nexport * from './SemanticAttributes';\n//# sourceMappingURL=index.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createConstMap } from '../internal/utils';\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticResourceAttributes\n//----------------------------------------------------------------------------------------------------------\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_CLOUD_PROVIDER = 'cloud.provider';\nvar TMP_CLOUD_ACCOUNT_ID = 'cloud.account.id';\nvar TMP_CLOUD_REGION = 'cloud.region';\nvar TMP_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone';\nvar TMP_CLOUD_PLATFORM = 'cloud.platform';\nvar TMP_AWS_ECS_CONTAINER_ARN = 'aws.ecs.container.arn';\nvar TMP_AWS_ECS_CLUSTER_ARN = 'aws.ecs.cluster.arn';\nvar TMP_AWS_ECS_LAUNCHTYPE = 'aws.ecs.launchtype';\nvar TMP_AWS_ECS_TASK_ARN = 'aws.ecs.task.arn';\nvar TMP_AWS_ECS_TASK_FAMILY = 'aws.ecs.task.family';\nvar TMP_AWS_ECS_TASK_REVISION = 'aws.ecs.task.revision';\nvar TMP_AWS_EKS_CLUSTER_ARN = 'aws.eks.cluster.arn';\nvar TMP_AWS_LOG_GROUP_NAMES = 'aws.log.group.names';\nvar TMP_AWS_LOG_GROUP_ARNS = 'aws.log.group.arns';\nvar TMP_AWS_LOG_STREAM_NAMES = 'aws.log.stream.names';\nvar TMP_AWS_LOG_STREAM_ARNS = 'aws.log.stream.arns';\nvar TMP_CONTAINER_NAME = 'container.name';\nvar TMP_CONTAINER_ID = 'container.id';\nvar TMP_CONTAINER_RUNTIME = 'container.runtime';\nvar TMP_CONTAINER_IMAGE_NAME = 'container.image.name';\nvar TMP_CONTAINER_IMAGE_TAG = 'container.image.tag';\nvar TMP_DEPLOYMENT_ENVIRONMENT = 'deployment.environment';\nvar TMP_DEVICE_ID = 'device.id';\nvar TMP_DEVICE_MODEL_IDENTIFIER = 'device.model.identifier';\nvar TMP_DEVICE_MODEL_NAME = 'device.model.name';\nvar TMP_FAAS_NAME = 'faas.name';\nvar TMP_FAAS_ID = 'faas.id';\nvar TMP_FAAS_VERSION = 'faas.version';\nvar TMP_FAAS_INSTANCE = 'faas.instance';\nvar TMP_FAAS_MAX_MEMORY = 'faas.max_memory';\nvar TMP_HOST_ID = 'host.id';\nvar TMP_HOST_NAME = 'host.name';\nvar TMP_HOST_TYPE = 'host.type';\nvar TMP_HOST_ARCH = 'host.arch';\nvar TMP_HOST_IMAGE_NAME = 'host.image.name';\nvar TMP_HOST_IMAGE_ID = 'host.image.id';\nvar TMP_HOST_IMAGE_VERSION = 'host.image.version';\nvar TMP_K8S_CLUSTER_NAME = 'k8s.cluster.name';\nvar TMP_K8S_NODE_NAME = 'k8s.node.name';\nvar TMP_K8S_NODE_UID = 'k8s.node.uid';\nvar TMP_K8S_NAMESPACE_NAME = 'k8s.namespace.name';\nvar TMP_K8S_POD_UID = 'k8s.pod.uid';\nvar TMP_K8S_POD_NAME = 'k8s.pod.name';\nvar TMP_K8S_CONTAINER_NAME = 'k8s.container.name';\nvar TMP_K8S_REPLICASET_UID = 'k8s.replicaset.uid';\nvar TMP_K8S_REPLICASET_NAME = 'k8s.replicaset.name';\nvar TMP_K8S_DEPLOYMENT_UID = 'k8s.deployment.uid';\nvar TMP_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name';\nvar TMP_K8S_STATEFULSET_UID = 'k8s.statefulset.uid';\nvar TMP_K8S_STATEFULSET_NAME = 'k8s.statefulset.name';\nvar TMP_K8S_DAEMONSET_UID = 'k8s.daemonset.uid';\nvar TMP_K8S_DAEMONSET_NAME = 'k8s.daemonset.name';\nvar TMP_K8S_JOB_UID = 'k8s.job.uid';\nvar TMP_K8S_JOB_NAME = 'k8s.job.name';\nvar TMP_K8S_CRONJOB_UID = 'k8s.cronjob.uid';\nvar TMP_K8S_CRONJOB_NAME = 'k8s.cronjob.name';\nvar TMP_OS_TYPE = 'os.type';\nvar TMP_OS_DESCRIPTION = 'os.description';\nvar TMP_OS_NAME = 'os.name';\nvar TMP_OS_VERSION = 'os.version';\nvar TMP_PROCESS_PID = 'process.pid';\nvar TMP_PROCESS_EXECUTABLE_NAME = 'process.executable.name';\nvar TMP_PROCESS_EXECUTABLE_PATH = 'process.executable.path';\nvar TMP_PROCESS_COMMAND = 'process.command';\nvar TMP_PROCESS_COMMAND_LINE = 'process.command_line';\nvar TMP_PROCESS_COMMAND_ARGS = 'process.command_args';\nvar TMP_PROCESS_OWNER = 'process.owner';\nvar TMP_PROCESS_RUNTIME_NAME = 'process.runtime.name';\nvar TMP_PROCESS_RUNTIME_VERSION = 'process.runtime.version';\nvar TMP_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description';\nvar TMP_SERVICE_NAME = 'service.name';\nvar TMP_SERVICE_NAMESPACE = 'service.namespace';\nvar TMP_SERVICE_INSTANCE_ID = 'service.instance.id';\nvar TMP_SERVICE_VERSION = 'service.version';\nvar TMP_TELEMETRY_SDK_NAME = 'telemetry.sdk.name';\nvar TMP_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language';\nvar TMP_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version';\nvar TMP_TELEMETRY_AUTO_VERSION = 'telemetry.auto.version';\nvar TMP_WEBENGINE_NAME = 'webengine.name';\nvar TMP_WEBENGINE_VERSION = 'webengine.version';\nvar TMP_WEBENGINE_DESCRIPTION = 'webengine.description';\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use ATTR_CLOUD_PROVIDER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CLOUD_PROVIDER = TMP_CLOUD_PROVIDER;\n/**\n * The cloud account ID the resource is assigned to.\n *\n * @deprecated Use ATTR_CLOUD_ACCOUNT_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CLOUD_ACCOUNT_ID = TMP_CLOUD_ACCOUNT_ID;\n/**\n * The geographical region the resource is running. Refer to your provider&#39;s docs to see the available regions, for example [Alibaba Cloud regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), [AWS regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), [Azure regions](https://azure.microsoft.com/en-us/global-infrastructure/geographies/), or [Google Cloud regions](https://cloud.google.com/about/locations).\n *\n * @deprecated Use ATTR_CLOUD_REGION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CLOUD_REGION = TMP_CLOUD_REGION;\n/**\n * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running.\n *\n * Note: Availability zones are called &#34;zones&#34; on Alibaba Cloud and Google Cloud.\n *\n * @deprecated Use ATTR_CLOUD_AVAILABILITY_ZONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CLOUD_AVAILABILITY_ZONE = TMP_CLOUD_AVAILABILITY_ZONE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use ATTR_CLOUD_PLATFORM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CLOUD_PLATFORM = TMP_CLOUD_PLATFORM;\n/**\n * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html).\n *\n * @deprecated Use ATTR_AWS_ECS_CONTAINER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_ECS_CONTAINER_ARN = TMP_AWS_ECS_CONTAINER_ARN;\n/**\n * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).\n *\n * @deprecated Use ATTR_AWS_ECS_CLUSTER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_ECS_CLUSTER_ARN = TMP_AWS_ECS_CLUSTER_ARN;\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use ATTR_AWS_ECS_LAUNCHTYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_ECS_LAUNCHTYPE = TMP_AWS_ECS_LAUNCHTYPE;\n/**\n * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html).\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_ECS_TASK_ARN = TMP_AWS_ECS_TASK_ARN;\n/**\n * The task definition family this task definition is a member of.\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_FAMILY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_ECS_TASK_FAMILY = TMP_AWS_ECS_TASK_FAMILY;\n/**\n * The revision for this task definition.\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_REVISION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_ECS_TASK_REVISION = TMP_AWS_ECS_TASK_REVISION;\n/**\n * The ARN of an EKS cluster.\n *\n * @deprecated Use ATTR_AWS_EKS_CLUSTER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_EKS_CLUSTER_ARN = TMP_AWS_EKS_CLUSTER_ARN;\n/**\n * The name(s) of the AWS log group(s) an application is writing to.\n *\n * Note: Multiple log groups must be supported for cases like multi-container applications, where a single application has sidecar containers, and each write to their own log group.\n *\n * @deprecated Use ATTR_AWS_LOG_GROUP_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_LOG_GROUP_NAMES = TMP_AWS_LOG_GROUP_NAMES;\n/**\n * The Amazon Resource Name(s) (ARN) of the AWS log group(s).\n *\n * Note: See the [log group ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format).\n *\n * @deprecated Use ATTR_AWS_LOG_GROUP_ARNS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_LOG_GROUP_ARNS = TMP_AWS_LOG_GROUP_ARNS;\n/**\n * The name(s) of the AWS log stream(s) an application is writing to.\n *\n * @deprecated Use ATTR_AWS_LOG_STREAM_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_LOG_STREAM_NAMES = TMP_AWS_LOG_STREAM_NAMES;\n/**\n * The ARN(s) of the AWS log stream(s).\n *\n * Note: See the [log stream ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). One log group can contain several log streams, so these ARNs necessarily identify both a log group and a log stream.\n *\n * @deprecated Use ATTR_AWS_LOG_STREAM_ARNS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_LOG_STREAM_ARNS = TMP_AWS_LOG_STREAM_ARNS;\n/**\n * Container name.\n *\n * @deprecated Use ATTR_CONTAINER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CONTAINER_NAME = TMP_CONTAINER_NAME;\n/**\n * Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/reference/run/#container-identification). The UUID might be abbreviated.\n *\n * @deprecated Use ATTR_CONTAINER_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CONTAINER_ID = TMP_CONTAINER_ID;\n/**\n * The container runtime managing this container.\n *\n * @deprecated Use ATTR_CONTAINER_RUNTIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CONTAINER_RUNTIME = TMP_CONTAINER_RUNTIME;\n/**\n * Name of the image the container was built on.\n *\n * @deprecated Use ATTR_CONTAINER_IMAGE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CONTAINER_IMAGE_NAME = TMP_CONTAINER_IMAGE_NAME;\n/**\n * Container image tag.\n *\n * @deprecated Use ATTR_CONTAINER_IMAGE_TAGS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CONTAINER_IMAGE_TAG = TMP_CONTAINER_IMAGE_TAG;\n/**\n * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier).\n *\n * @deprecated Use ATTR_DEPLOYMENT_ENVIRONMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_DEPLOYMENT_ENVIRONMENT = TMP_DEPLOYMENT_ENVIRONMENT;\n/**\n * A unique identifier representing the device.\n *\n * Note: The device identifier MUST only be defined using the values outlined below. This value is not an advertising identifier and MUST NOT be used as such. On iOS (Swift or Objective-C), this value MUST be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android (Java or Kotlin), this value MUST be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application. More information can be found [here](https://developer.android.com/training/articles/user-data-ids) on best practices and exact implementation details. Caution should be taken when storing personal data or anything which can identify a user. GDPR and data protection laws may apply, ensure you do your own due diligence.\n *\n * @deprecated Use ATTR_DEVICE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_DEVICE_ID = TMP_DEVICE_ID;\n/**\n * The model identifier for the device.\n *\n * Note: It&#39;s recommended this value represents a machine readable version of the model identifier rather than the market or consumer-friendly name of the device.\n *\n * @deprecated Use ATTR_DEVICE_MODEL_IDENTIFIER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_DEVICE_MODEL_IDENTIFIER = TMP_DEVICE_MODEL_IDENTIFIER;\n/**\n * The marketing name for the device model.\n *\n * Note: It&#39;s recommended this value represents a human readable version of the device model rather than a machine readable alternative.\n *\n * @deprecated Use ATTR_DEVICE_MODEL_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_DEVICE_MODEL_NAME = TMP_DEVICE_MODEL_NAME;\n/**\n * The name of the single function that this runtime instance executes.\n *\n * Note: This is the name of the function as configured/deployed on the FaaS platform and is usually different from the name of the callback function (which may be stored in the [`code.namespace`/`code.function`](../../trace/semantic_conventions/span-general.md#source-code-attributes) span attributes).\n *\n * @deprecated Use ATTR_FAAS_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_FAAS_NAME = TMP_FAAS_NAME;\n/**\n* The unique ID of the single function that this runtime instance executes.\n*\n* Note: Depending on the cloud provider, use:\n\n* **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).\nTake care not to use the &#34;invoked ARN&#34; directly but replace any\n[alias suffix](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) with the resolved function version, as the same runtime instance may be invokable with multiple\ndifferent aliases.\n* **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names)\n* **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id).\n\nOn some providers, it may not be possible to determine the full ID at startup,\nwhich is why this field cannot be made required. For example, on AWS the account ID\npart of the ARN is not available without calling another AWS API\nwhich may be deemed too slow for a short-running lambda function.\nAs an alternative, consider setting `faas.id` as a span attribute instead.\n*\n* @deprecated Use ATTR_CLOUD_RESOURCE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexport var SEMRESATTRS_FAAS_ID = TMP_FAAS_ID;\n/**\n* The immutable version of the function being executed.\n*\n* Note: Depending on the cloud provider and platform, use:\n\n* **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html)\n  (an integer represented as a decimal string).\n* **Google Cloud Run:** The [revision](https://cloud.google.com/run/docs/managing/revisions)\n  (i.e., the function name plus the revision suffix).\n* **Google Cloud Functions:** The value of the\n  [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically).\n* **Azure Functions:** Not applicable. Do not set this attribute.\n*\n* @deprecated Use ATTR_FAAS_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexport var SEMRESATTRS_FAAS_VERSION = TMP_FAAS_VERSION;\n/**\n * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version.\n *\n * Note: * **AWS Lambda:** Use the (full) log stream name.\n *\n * @deprecated Use ATTR_FAAS_INSTANCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_FAAS_INSTANCE = TMP_FAAS_INSTANCE;\n/**\n * The amount of memory available to the serverless function in MiB.\n *\n * Note: It&#39;s recommended to set this attribute since e.g. too little memory can easily stop a Java AWS Lambda function from working correctly. On AWS Lambda, the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this information.\n *\n * @deprecated Use ATTR_FAAS_MAX_MEMORY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_FAAS_MAX_MEMORY = TMP_FAAS_MAX_MEMORY;\n/**\n * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider.\n *\n * @deprecated Use ATTR_HOST_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_HOST_ID = TMP_HOST_ID;\n/**\n * Name of the host. On Unix systems, it may contain what the hostname command returns, or the fully qualified hostname, or another name specified by the user.\n *\n * @deprecated Use ATTR_HOST_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_HOST_NAME = TMP_HOST_NAME;\n/**\n * Type of host. For Cloud, this must be the machine type.\n *\n * @deprecated Use ATTR_HOST_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_HOST_TYPE = TMP_HOST_TYPE;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use ATTR_HOST_ARCH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_HOST_ARCH = TMP_HOST_ARCH;\n/**\n * Name of the VM image or OS install the host was instantiated from.\n *\n * @deprecated Use ATTR_HOST_IMAGE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_HOST_IMAGE_NAME = TMP_HOST_IMAGE_NAME;\n/**\n * VM image ID. For Cloud, this value is from the provider.\n *\n * @deprecated Use ATTR_HOST_IMAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_HOST_IMAGE_ID = TMP_HOST_IMAGE_ID;\n/**\n * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes).\n *\n * @deprecated Use ATTR_HOST_IMAGE_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_HOST_IMAGE_VERSION = TMP_HOST_IMAGE_VERSION;\n/**\n * The name of the cluster.\n *\n * @deprecated Use ATTR_K8S_CLUSTER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_CLUSTER_NAME = TMP_K8S_CLUSTER_NAME;\n/**\n * The name of the Node.\n *\n * @deprecated Use ATTR_K8S_NODE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_NODE_NAME = TMP_K8S_NODE_NAME;\n/**\n * The UID of the Node.\n *\n * @deprecated Use ATTR_K8S_NODE_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_NODE_UID = TMP_K8S_NODE_UID;\n/**\n * The name of the namespace that the pod is running in.\n *\n * @deprecated Use ATTR_K8S_NAMESPACE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_NAMESPACE_NAME = TMP_K8S_NAMESPACE_NAME;\n/**\n * The UID of the Pod.\n *\n * @deprecated Use ATTR_K8S_POD_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_POD_UID = TMP_K8S_POD_UID;\n/**\n * The name of the Pod.\n *\n * @deprecated Use ATTR_K8S_POD_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_POD_NAME = TMP_K8S_POD_NAME;\n/**\n * The name of the Container in a Pod template.\n *\n * @deprecated Use ATTR_K8S_CONTAINER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_CONTAINER_NAME = TMP_K8S_CONTAINER_NAME;\n/**\n * The UID of the ReplicaSet.\n *\n * @deprecated Use ATTR_K8S_REPLICASET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_REPLICASET_UID = TMP_K8S_REPLICASET_UID;\n/**\n * The name of the ReplicaSet.\n *\n * @deprecated Use ATTR_K8S_REPLICASET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_REPLICASET_NAME = TMP_K8S_REPLICASET_NAME;\n/**\n * The UID of the Deployment.\n *\n * @deprecated Use ATTR_K8S_DEPLOYMENT_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_DEPLOYMENT_UID = TMP_K8S_DEPLOYMENT_UID;\n/**\n * The name of the Deployment.\n *\n * @deprecated Use ATTR_K8S_DEPLOYMENT_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_DEPLOYMENT_NAME = TMP_K8S_DEPLOYMENT_NAME;\n/**\n * The UID of the StatefulSet.\n *\n * @deprecated Use ATTR_K8S_STATEFULSET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_STATEFULSET_UID = TMP_K8S_STATEFULSET_UID;\n/**\n * The name of the StatefulSet.\n *\n * @deprecated Use ATTR_K8S_STATEFULSET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_STATEFULSET_NAME = TMP_K8S_STATEFULSET_NAME;\n/**\n * The UID of the DaemonSet.\n *\n * @deprecated Use ATTR_K8S_DAEMONSET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_DAEMONSET_UID = TMP_K8S_DAEMONSET_UID;\n/**\n * The name of the DaemonSet.\n *\n * @deprecated Use ATTR_K8S_DAEMONSET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_DAEMONSET_NAME = TMP_K8S_DAEMONSET_NAME;\n/**\n * The UID of the Job.\n *\n * @deprecated Use ATTR_K8S_JOB_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_JOB_UID = TMP_K8S_JOB_UID;\n/**\n * The name of the Job.\n *\n * @deprecated Use ATTR_K8S_JOB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_JOB_NAME = TMP_K8S_JOB_NAME;\n/**\n * The UID of the CronJob.\n *\n * @deprecated Use ATTR_K8S_CRONJOB_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_CRONJOB_UID = TMP_K8S_CRONJOB_UID;\n/**\n * The name of the CronJob.\n *\n * @deprecated Use ATTR_K8S_CRONJOB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_CRONJOB_NAME = TMP_K8S_CRONJOB_NAME;\n/**\n * The operating system type.\n *\n * @deprecated Use ATTR_OS_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_OS_TYPE = TMP_OS_TYPE;\n/**\n * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands.\n *\n * @deprecated Use ATTR_OS_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_OS_DESCRIPTION = TMP_OS_DESCRIPTION;\n/**\n * Human readable operating system name.\n *\n * @deprecated Use ATTR_OS_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_OS_NAME = TMP_OS_NAME;\n/**\n * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes).\n *\n * @deprecated Use ATTR_OS_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_OS_VERSION = TMP_OS_VERSION;\n/**\n * Process identifier (PID).\n *\n * @deprecated Use ATTR_PROCESS_PID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_PID = TMP_PROCESS_PID;\n/**\n * The name of the process executable. On Linux based systems, can be set to the `Name` in `proc/[pid]/status`. On Windows, can be set to the base name of `GetProcessImageFileNameW`.\n *\n * @deprecated Use ATTR_PROCESS_EXECUTABLE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_EXECUTABLE_NAME = TMP_PROCESS_EXECUTABLE_NAME;\n/**\n * The full path to the process executable. On Linux based systems, can be set to the target of `proc/[pid]/exe`. On Windows, can be set to the result of `GetProcessImageFileNameW`.\n *\n * @deprecated Use ATTR_PROCESS_EXECUTABLE_PATH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_EXECUTABLE_PATH = TMP_PROCESS_EXECUTABLE_PATH;\n/**\n * The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter extracted from `GetCommandLineW`.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_COMMAND = TMP_PROCESS_COMMAND;\n/**\n * The full command used to launch the process as a single string representing the full command. On Windows, can be set to the result of `GetCommandLineW`. Do not set this if you have to assemble it just for monitoring; use `process.command_args` instead.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND_LINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_COMMAND_LINE = TMP_PROCESS_COMMAND_LINE;\n/**\n * All the command arguments (including the command/executable itself) as received by the process. On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according to the list of null-delimited strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this would be the full argv vector passed to `main`.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND_ARGS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_COMMAND_ARGS = TMP_PROCESS_COMMAND_ARGS;\n/**\n * The username of the user that owns the process.\n *\n * @deprecated Use ATTR_PROCESS_OWNER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_OWNER = TMP_PROCESS_OWNER;\n/**\n * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_RUNTIME_NAME = TMP_PROCESS_RUNTIME_NAME;\n/**\n * The version of the runtime of this process, as returned by the runtime without modification.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_RUNTIME_VERSION = TMP_PROCESS_RUNTIME_VERSION;\n/**\n * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION = TMP_PROCESS_RUNTIME_DESCRIPTION;\n/**\n * Logical name of the service.\n *\n * Note: MUST be the same for all instances of horizontally scaled services. If the value was not specified, SDKs MUST fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md#process), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value MUST be set to `unknown_service`.\n *\n * @deprecated Use ATTR_SERVICE_NAME.\n */\nexport var SEMRESATTRS_SERVICE_NAME = TMP_SERVICE_NAME;\n/**\n * A namespace for `service.name`.\n *\n * Note: A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n *\n * @deprecated Use ATTR_SERVICE_NAMESPACE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_SERVICE_NAMESPACE = TMP_SERVICE_NAMESPACE;\n/**\n * The string ID of the service instance.\n *\n * Note: MUST be unique for each instance of the same `service.namespace,service.name` pair (in other words `service.namespace,service.name,service.instance.id` triplet MUST be globally unique). The ID helps to distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled service). It is preferable for the ID to be persistent and stay the same for the lifetime of the service instance, however it is acceptable that the ID is ephemeral and changes during important lifetime events for the service (e.g. service restarts). If the service has no inherent unique ID that can be used as the value of this attribute it is recommended to generate a random Version 1 or Version 4 RFC 4122 UUID (services aiming for reproducible UUIDs may also use Version 5, see RFC 4122 for more recommendations).\n *\n * @deprecated Use ATTR_SERVICE_INSTANCE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_SERVICE_INSTANCE_ID = TMP_SERVICE_INSTANCE_ID;\n/**\n * The version string of the service API or implementation.\n *\n * @deprecated Use ATTR_SERVICE_VERSION.\n */\nexport var SEMRESATTRS_SERVICE_VERSION = TMP_SERVICE_VERSION;\n/**\n * The name of the telemetry SDK as defined above.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_NAME.\n */\nexport var SEMRESATTRS_TELEMETRY_SDK_NAME = TMP_TELEMETRY_SDK_NAME;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_LANGUAGE.\n */\nexport var SEMRESATTRS_TELEMETRY_SDK_LANGUAGE = TMP_TELEMETRY_SDK_LANGUAGE;\n/**\n * The version string of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_VERSION.\n */\nexport var SEMRESATTRS_TELEMETRY_SDK_VERSION = TMP_TELEMETRY_SDK_VERSION;\n/**\n * The version string of the auto instrumentation agent, if used.\n *\n * @deprecated Use ATTR_TELEMETRY_DISTRO_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_TELEMETRY_AUTO_VERSION = TMP_TELEMETRY_AUTO_VERSION;\n/**\n * The name of the web engine.\n *\n * @deprecated Use ATTR_WEBENGINE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_WEBENGINE_NAME = TMP_WEBENGINE_NAME;\n/**\n * The version of the web engine.\n *\n * @deprecated Use ATTR_WEBENGINE_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_WEBENGINE_VERSION = TMP_WEBENGINE_VERSION;\n/**\n * Additional description of the web engine (e.g. detailed version and edition information).\n *\n * @deprecated Use ATTR_WEBENGINE_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_WEBENGINE_DESCRIPTION = TMP_WEBENGINE_DESCRIPTION;\n/**\n * Create exported Value Map for SemanticResourceAttributes values\n * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification\n */\nexport var SemanticResourceAttributes = \n/*#__PURE__*/ createConstMap([\n    TMP_CLOUD_PROVIDER,\n    TMP_CLOUD_ACCOUNT_ID,\n    TMP_CLOUD_REGION,\n    TMP_CLOUD_AVAILABILITY_ZONE,\n    TMP_CLOUD_PLATFORM,\n    TMP_AWS_ECS_CONTAINER_ARN,\n    TMP_AWS_ECS_CLUSTER_ARN,\n    TMP_AWS_ECS_LAUNCHTYPE,\n    TMP_AWS_ECS_TASK_ARN,\n    TMP_AWS_ECS_TASK_FAMILY,\n    TMP_AWS_ECS_TASK_REVISION,\n    TMP_AWS_EKS_CLUSTER_ARN,\n    TMP_AWS_LOG_GROUP_NAMES,\n    TMP_AWS_LOG_GROUP_ARNS,\n    TMP_AWS_LOG_STREAM_NAMES,\n    TMP_AWS_LOG_STREAM_ARNS,\n    TMP_CONTAINER_NAME,\n    TMP_CONTAINER_ID,\n    TMP_CONTAINER_RUNTIME,\n    TMP_CONTAINER_IMAGE_NAME,\n    TMP_CONTAINER_IMAGE_TAG,\n    TMP_DEPLOYMENT_ENVIRONMENT,\n    TMP_DEVICE_ID,\n    TMP_DEVICE_MODEL_IDENTIFIER,\n    TMP_DEVICE_MODEL_NAME,\n    TMP_FAAS_NAME,\n    TMP_FAAS_ID,\n    TMP_FAAS_VERSION,\n    TMP_FAAS_INSTANCE,\n    TMP_FAAS_MAX_MEMORY,\n    TMP_HOST_ID,\n    TMP_HOST_NAME,\n    TMP_HOST_TYPE,\n    TMP_HOST_ARCH,\n    TMP_HOST_IMAGE_NAME,\n    TMP_HOST_IMAGE_ID,\n    TMP_HOST_IMAGE_VERSION,\n    TMP_K8S_CLUSTER_NAME,\n    TMP_K8S_NODE_NAME,\n    TMP_K8S_NODE_UID,\n    TMP_K8S_NAMESPACE_NAME,\n    TMP_K8S_POD_UID,\n    TMP_K8S_POD_NAME,\n    TMP_K8S_CONTAINER_NAME,\n    TMP_K8S_REPLICASET_UID,\n    TMP_K8S_REPLICASET_NAME,\n    TMP_K8S_DEPLOYMENT_UID,\n    TMP_K8S_DEPLOYMENT_NAME,\n    TMP_K8S_STATEFULSET_UID,\n    TMP_K8S_STATEFULSET_NAME,\n    TMP_K8S_DAEMONSET_UID,\n    TMP_K8S_DAEMONSET_NAME,\n    TMP_K8S_JOB_UID,\n    TMP_K8S_JOB_NAME,\n    TMP_K8S_CRONJOB_UID,\n    TMP_K8S_CRONJOB_NAME,\n    TMP_OS_TYPE,\n    TMP_OS_DESCRIPTION,\n    TMP_OS_NAME,\n    TMP_OS_VERSION,\n    TMP_PROCESS_PID,\n    TMP_PROCESS_EXECUTABLE_NAME,\n    TMP_PROCESS_EXECUTABLE_PATH,\n    TMP_PROCESS_COMMAND,\n    TMP_PROCESS_COMMAND_LINE,\n    TMP_PROCESS_COMMAND_ARGS,\n    TMP_PROCESS_OWNER,\n    TMP_PROCESS_RUNTIME_NAME,\n    TMP_PROCESS_RUNTIME_VERSION,\n    TMP_PROCESS_RUNTIME_DESCRIPTION,\n    TMP_SERVICE_NAME,\n    TMP_SERVICE_NAMESPACE,\n    TMP_SERVICE_INSTANCE_ID,\n    TMP_SERVICE_VERSION,\n    TMP_TELEMETRY_SDK_NAME,\n    TMP_TELEMETRY_SDK_LANGUAGE,\n    TMP_TELEMETRY_SDK_VERSION,\n    TMP_TELEMETRY_AUTO_VERSION,\n    TMP_WEBENGINE_NAME,\n    TMP_WEBENGINE_VERSION,\n    TMP_WEBENGINE_DESCRIPTION,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudProviderValues enum definition\n *\n * Name of the cloud provider.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud';\nvar TMP_CLOUDPROVIDERVALUES_AWS = 'aws';\nvar TMP_CLOUDPROVIDERVALUES_AZURE = 'azure';\nvar TMP_CLOUDPROVIDERVALUES_GCP = 'gcp';\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_ALIBABA_CLOUD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPROVIDERVALUES_ALIBABA_CLOUD = TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD;\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_AWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPROVIDERVALUES_AWS = TMP_CLOUDPROVIDERVALUES_AWS;\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_AZURE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPROVIDERVALUES_AZURE = TMP_CLOUDPROVIDERVALUES_AZURE;\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_GCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPROVIDERVALUES_GCP = TMP_CLOUDPROVIDERVALUES_GCP;\n/**\n * The constant map of values for CloudProviderValues.\n * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification.\n */\nexport var CloudProviderValues = \n/*#__PURE__*/ createConstMap([\n    TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD,\n    TMP_CLOUDPROVIDERVALUES_AWS,\n    TMP_CLOUDPROVIDERVALUES_AZURE,\n    TMP_CLOUDPROVIDERVALUES_GCP,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudPlatformValues enum definition\n *\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = 'alibaba_cloud_ecs';\nvar TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = 'alibaba_cloud_fc';\nvar TMP_CLOUDPLATFORMVALUES_AWS_EC2 = 'aws_ec2';\nvar TMP_CLOUDPLATFORMVALUES_AWS_ECS = 'aws_ecs';\nvar TMP_CLOUDPLATFORMVALUES_AWS_EKS = 'aws_eks';\nvar TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA = 'aws_lambda';\nvar TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = 'aws_elastic_beanstalk';\nvar TMP_CLOUDPLATFORMVALUES_AZURE_VM = 'azure_vm';\nvar TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = 'azure_container_instances';\nvar TMP_CLOUDPLATFORMVALUES_AZURE_AKS = 'azure_aks';\nvar TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = 'azure_functions';\nvar TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = 'azure_app_service';\nvar TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = 'gcp_compute_engine';\nvar TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = 'gcp_cloud_run';\nvar TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = 'gcp_kubernetes_engine';\nvar TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = 'gcp_cloud_functions';\nvar TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE = 'gcp_app_engine';\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_ECS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_FC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_EC2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AWS_EC2 = TMP_CLOUDPLATFORMVALUES_AWS_EC2;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_ECS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AWS_ECS = TMP_CLOUDPLATFORMVALUES_AWS_ECS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_EKS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AWS_EKS = TMP_CLOUDPLATFORMVALUES_AWS_EKS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_LAMBDA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AWS_LAMBDA = TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_VM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AZURE_VM = TMP_CLOUDPLATFORMVALUES_AZURE_VM;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_INSTANCES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_AKS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AZURE_AKS = TMP_CLOUDPLATFORMVALUES_AZURE_AKS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_FUNCTIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_APP_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_COMPUTE_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_CLOUD_RUN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_KUBERNETES_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_CLOUD_FUNCTIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_APP_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_GCP_APP_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE;\n/**\n * The constant map of values for CloudPlatformValues.\n * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification.\n */\nexport var CloudPlatformValues = \n/*#__PURE__*/ createConstMap([\n    TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS,\n    TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC,\n    TMP_CLOUDPLATFORMVALUES_AWS_EC2,\n    TMP_CLOUDPLATFORMVALUES_AWS_ECS,\n    TMP_CLOUDPLATFORMVALUES_AWS_EKS,\n    TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA,\n    TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK,\n    TMP_CLOUDPLATFORMVALUES_AZURE_VM,\n    TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES,\n    TMP_CLOUDPLATFORMVALUES_AZURE_AKS,\n    TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS,\n    TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE,\n    TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE,\n    TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN,\n    TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE,\n    TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS,\n    TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for AwsEcsLaunchtypeValues enum definition\n *\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_AWSECSLAUNCHTYPEVALUES_EC2 = 'ec2';\nvar TMP_AWSECSLAUNCHTYPEVALUES_FARGATE = 'fargate';\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use AWS_ECS_LAUNCHTYPE_VALUE_EC2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var AWSECSLAUNCHTYPEVALUES_EC2 = TMP_AWSECSLAUNCHTYPEVALUES_EC2;\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use AWS_ECS_LAUNCHTYPE_VALUE_FARGATE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var AWSECSLAUNCHTYPEVALUES_FARGATE = TMP_AWSECSLAUNCHTYPEVALUES_FARGATE;\n/**\n * The constant map of values for AwsEcsLaunchtypeValues.\n * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification.\n */\nexport var AwsEcsLaunchtypeValues = \n/*#__PURE__*/ createConstMap([\n    TMP_AWSECSLAUNCHTYPEVALUES_EC2,\n    TMP_AWSECSLAUNCHTYPEVALUES_FARGATE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HostArchValues enum definition\n *\n * The CPU architecture the host system is running on.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_HOSTARCHVALUES_AMD64 = 'amd64';\nvar TMP_HOSTARCHVALUES_ARM32 = 'arm32';\nvar TMP_HOSTARCHVALUES_ARM64 = 'arm64';\nvar TMP_HOSTARCHVALUES_IA64 = 'ia64';\nvar TMP_HOSTARCHVALUES_PPC32 = 'ppc32';\nvar TMP_HOSTARCHVALUES_PPC64 = 'ppc64';\nvar TMP_HOSTARCHVALUES_X86 = 'x86';\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_AMD64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HOSTARCHVALUES_AMD64 = TMP_HOSTARCHVALUES_AMD64;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_ARM32 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HOSTARCHVALUES_ARM32 = TMP_HOSTARCHVALUES_ARM32;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_ARM64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HOSTARCHVALUES_ARM64 = TMP_HOSTARCHVALUES_ARM64;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_IA64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HOSTARCHVALUES_IA64 = TMP_HOSTARCHVALUES_IA64;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_PPC32 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HOSTARCHVALUES_PPC32 = TMP_HOSTARCHVALUES_PPC32;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_PPC64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HOSTARCHVALUES_PPC64 = TMP_HOSTARCHVALUES_PPC64;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_X86 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HOSTARCHVALUES_X86 = TMP_HOSTARCHVALUES_X86;\n/**\n * The constant map of values for HostArchValues.\n * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification.\n */\nexport var HostArchValues = \n/*#__PURE__*/ createConstMap([\n    TMP_HOSTARCHVALUES_AMD64,\n    TMP_HOSTARCHVALUES_ARM32,\n    TMP_HOSTARCHVALUES_ARM64,\n    TMP_HOSTARCHVALUES_IA64,\n    TMP_HOSTARCHVALUES_PPC32,\n    TMP_HOSTARCHVALUES_PPC64,\n    TMP_HOSTARCHVALUES_X86,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for OsTypeValues enum definition\n *\n * The operating system type.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_OSTYPEVALUES_WINDOWS = 'windows';\nvar TMP_OSTYPEVALUES_LINUX = 'linux';\nvar TMP_OSTYPEVALUES_DARWIN = 'darwin';\nvar TMP_OSTYPEVALUES_FREEBSD = 'freebsd';\nvar TMP_OSTYPEVALUES_NETBSD = 'netbsd';\nvar TMP_OSTYPEVALUES_OPENBSD = 'openbsd';\nvar TMP_OSTYPEVALUES_DRAGONFLYBSD = 'dragonflybsd';\nvar TMP_OSTYPEVALUES_HPUX = 'hpux';\nvar TMP_OSTYPEVALUES_AIX = 'aix';\nvar TMP_OSTYPEVALUES_SOLARIS = 'solaris';\nvar TMP_OSTYPEVALUES_Z_OS = 'z_os';\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_WINDOWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_WINDOWS = TMP_OSTYPEVALUES_WINDOWS;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_LINUX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_LINUX = TMP_OSTYPEVALUES_LINUX;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_DARWIN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_DARWIN = TMP_OSTYPEVALUES_DARWIN;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_FREEBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_FREEBSD = TMP_OSTYPEVALUES_FREEBSD;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_NETBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_NETBSD = TMP_OSTYPEVALUES_NETBSD;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_OPENBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_OPENBSD = TMP_OSTYPEVALUES_OPENBSD;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_DRAGONFLYBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_DRAGONFLYBSD = TMP_OSTYPEVALUES_DRAGONFLYBSD;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_HPUX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_HPUX = TMP_OSTYPEVALUES_HPUX;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_AIX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_AIX = TMP_OSTYPEVALUES_AIX;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_SOLARIS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_SOLARIS = TMP_OSTYPEVALUES_SOLARIS;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_Z_OS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_Z_OS = TMP_OSTYPEVALUES_Z_OS;\n/**\n * The constant map of values for OsTypeValues.\n * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification.\n */\nexport var OsTypeValues = \n/*#__PURE__*/ createConstMap([\n    TMP_OSTYPEVALUES_WINDOWS,\n    TMP_OSTYPEVALUES_LINUX,\n    TMP_OSTYPEVALUES_DARWIN,\n    TMP_OSTYPEVALUES_FREEBSD,\n    TMP_OSTYPEVALUES_NETBSD,\n    TMP_OSTYPEVALUES_OPENBSD,\n    TMP_OSTYPEVALUES_DRAGONFLYBSD,\n    TMP_OSTYPEVALUES_HPUX,\n    TMP_OSTYPEVALUES_AIX,\n    TMP_OSTYPEVALUES_SOLARIS,\n    TMP_OSTYPEVALUES_Z_OS,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for TelemetrySdkLanguageValues enum definition\n *\n * The language of the telemetry SDK.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_CPP = 'cpp';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET = 'dotnet';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG = 'erlang';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_GO = 'go';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA = 'java';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS = 'nodejs';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_PHP = 'php';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON = 'python';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY = 'ruby';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS = 'webjs';\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_CPP.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_CPP = TMP_TELEMETRYSDKLANGUAGEVALUES_CPP;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_DOTNET = TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_ERLANG = TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_GO.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_GO = TMP_TELEMETRYSDKLANGUAGEVALUES_GO;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_JAVA.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_JAVA = TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_NODEJS = TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PHP.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_PHP = TMP_TELEMETRYSDKLANGUAGEVALUES_PHP;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_PYTHON = TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_RUBY.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_RUBY = TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_WEBJS = TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS;\n/**\n * The constant map of values for TelemetrySdkLanguageValues.\n * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification.\n */\nexport var TelemetrySdkLanguageValues = \n/*#__PURE__*/ createConstMap([\n    TMP_TELEMETRYSDKLANGUAGEVALUES_CPP,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_GO,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_PHP,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS,\n]);\n//# sourceMappingURL=SemanticResourceAttributes.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only one-level deep at this point,\n * and should not cause problems for tree-shakers.\n */\nexport * from './SemanticResourceAttributes';\n//# sourceMappingURL=index.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n/**\n * Rate-limiting result, shows whether the lease was acquired or contains a rejection reason\n *\n * @example acquired\n * @example request_canceled\n */\nexport var ATTR_ASPNETCORE_RATE_LIMITING_RESULT = 'aspnetcore.rate_limiting.result';\n/**\n  * Enum value \"acquired\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n  */\nexport var ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED = \"acquired\";\n/**\n  * Enum value \"endpoint_limiter\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n  */\nexport var ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER = \"endpoint_limiter\";\n/**\n  * Enum value \"global_limiter\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n  */\nexport var ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER = \"global_limiter\";\n/**\n  * Enum value \"request_canceled\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n  */\nexport var ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED = \"request_canceled\";\n/**\n * The language of the telemetry SDK.\n */\nexport var ATTR_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language';\n/**\n  * Enum value \"cpp\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_CPP = \"cpp\";\n/**\n  * Enum value \"dotnet\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET = \"dotnet\";\n/**\n  * Enum value \"erlang\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG = \"erlang\";\n/**\n  * Enum value \"go\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_GO = \"go\";\n/**\n  * Enum value \"java\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_JAVA = \"java\";\n/**\n  * Enum value \"nodejs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS = \"nodejs\";\n/**\n  * Enum value \"php\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_PHP = \"php\";\n/**\n  * Enum value \"python\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON = \"python\";\n/**\n  * Enum value \"ruby\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_RUBY = \"ruby\";\n/**\n  * Enum value \"rust\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_RUST = \"rust\";\n/**\n  * Enum value \"swift\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT = \"swift\";\n/**\n  * Enum value \"webjs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS = \"webjs\";\n/**\n * The name of the telemetry SDK as defined above.\n *\n * @example opentelemetry\n *\n * @note The OpenTelemetry SDK **MUST** set the `telemetry.sdk.name` attribute to `opentelemetry`.\n * If another SDK, like a fork or a vendor-provided implementation, is used, this SDK **MUST** set the\n * `telemetry.sdk.name` attribute to the fully-qualified class or module name of this SDK's main entry point\n * or another suitable identifier depending on the language.\n * The identifier `opentelemetry` is reserved and **MUST NOT** be used in this case.\n * All custom identifiers **SHOULD** be stable across different versions of an implementation.\n */\nexport var ATTR_TELEMETRY_SDK_NAME = 'telemetry.sdk.name';\n/**\n * The version string of the telemetry SDK.\n *\n * @example 1.2.3\n */\nexport var ATTR_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version';\n/**\n * Full type name of the [`IExceptionHandler`](https://learn.microsoft.com/dotnet/api/microsoft.aspnetcore.diagnostics.iexceptionhandler) implementation that handled the exception.\n *\n * @example Contoso.MyHandler\n */\nexport var ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE = 'aspnetcore.diagnostics.handler.type';\n/**\n * ASP.NET Core exception middleware handling result\n *\n * @example handled\n * @example unhandled\n */\nexport var ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT = 'aspnetcore.diagnostics.exception.result';\n/**\n  * Enum value \"aborted\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n  */\nexport var ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED = \"aborted\";\n/**\n  * Enum value \"handled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n  */\nexport var ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED = \"handled\";\n/**\n  * Enum value \"skipped\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n  */\nexport var ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED = \"skipped\";\n/**\n  * Enum value \"unhandled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n  */\nexport var ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED = \"unhandled\";\n/**\n * Rate limiting policy name.\n *\n * @example fixed\n * @example sliding\n * @example token\n */\nexport var ATTR_ASPNETCORE_RATE_LIMITING_POLICY = 'aspnetcore.rate_limiting.policy';\n/**\n * Flag indicating if request was handled by the application pipeline.\n *\n * @example true\n */\nexport var ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED = 'aspnetcore.request.is_unhandled';\n/**\n * A value that indicates whether the matched route is a fallback route.\n *\n * @example true\n */\nexport var ATTR_ASPNETCORE_ROUTING_IS_FALLBACK = 'aspnetcore.routing.is_fallback';\n/**\n * Match result - success or failure\n *\n * @example success\n * @example failure\n */\nexport var ATTR_ASPNETCORE_ROUTING_MATCH_STATUS = 'aspnetcore.routing.match_status';\n/**\n  * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n  */\nexport var ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE = \"failure\";\n/**\n  * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n  */\nexport var ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS = \"success\";\n/**\n * Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example client.example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the server side, and when communicating through an intermediary, `client.address` **SHOULD** represent the client address behind any intermediaries,  for example proxies, if it's available.\n */\nexport var ATTR_CLIENT_ADDRESS = 'client.address';\n/**\n * Client port number.\n *\n * @example 65123\n *\n * @note When observed from the server side, and when communicating through an intermediary, `client.port` **SHOULD** represent the client port behind any intermediaries,  for example proxies, if it's available.\n */\nexport var ATTR_CLIENT_PORT = 'client.port';\n/**\n * Describes a class of error the operation ended with.\n *\n * @example timeout\n * @example java.net.UnknownHostException\n * @example server_certificate_invalid\n * @example 500\n *\n * @note The `error.type` **SHOULD** be predictable, and **SHOULD** have low cardinality.\n *\n * When `error.type` is set to a type (e.g., an exception type), its\n * canonical class name identifying the type within the artifact **SHOULD** be used.\n *\n * Instrumentations **SHOULD** document the list of errors they report.\n *\n * The cardinality of `error.type` within one instrumentation library **SHOULD** be low.\n * Telemetry consumers that aggregate data from multiple instrumentation libraries and applications\n * should be prepared for `error.type` to have high cardinality at query time when no\n * additional filters are applied.\n *\n * If the operation has completed successfully, instrumentations **SHOULD NOT** set `error.type`.\n *\n * If a specific domain defines its own set of error identifiers (such as HTTP or gRPC status codes),\n * it's **RECOMMENDED** to:\n *\n *   - Use a domain-specific attribute\n *   - Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not.\n */\nexport var ATTR_ERROR_TYPE = 'error.type';\n/**\n  * Enum value \"_OTHER\" for attribute {@link ATTR_ERROR_TYPE}.\n  */\nexport var ERROR_TYPE_VALUE_OTHER = \"_OTHER\";\n/**\n * **SHOULD** be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.\n *\n * @note An exception is considered to have escaped (or left) the scope of a span,\n * if that span is ended while the exception is still logically \"in flight\".\n * This may be actually \"in flight\" in some languages (e.g. if the exception\n * is passed to a Context manager's `__exit__` method in Python) but will\n * usually be caught at the point of recording the exception in most languages.\n *\n * It is usually not possible to determine at the point where an exception is thrown\n * whether it will escape the scope of a span.\n * However, it is trivial to know that an exception\n * will escape, if one checks for an active exception just before ending the span,\n * as done in the [example for recording span exceptions](https://opentelemetry.io/docs/specs/semconv/exceptions/exceptions-spans/#recording-an-exception).\n *\n * It follows that an exception may still escape the scope of the span\n * even if the `exception.escaped` attribute was not set or set to false,\n * since the event might have been recorded at a time where it was not\n * clear whether the exception will escape.\n */\nexport var ATTR_EXCEPTION_ESCAPED = 'exception.escaped';\n/**\n * The exception message.\n *\n * @example Division by zero\n * @example Can't convert 'int' object to str implicitly\n */\nexport var ATTR_EXCEPTION_MESSAGE = 'exception.message';\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n *\n * @example \"Exception in thread \"main\" java.lang.RuntimeException: Test exception\\\\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\\\\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\\\\n at com.example.GenerateTrace.main(GenerateTrace.java:5)\\\\n\"\n */\nexport var ATTR_EXCEPTION_STACKTRACE = 'exception.stacktrace';\n/**\n * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n *\n * @example java.net.ConnectException\n * @example OSError\n */\nexport var ATTR_EXCEPTION_TYPE = 'exception.type';\n/**\n * HTTP request headers, `<key>` being the normalized HTTP Header name (lowercase), the value being the header values.\n *\n * @example http.request.header.content-type=[\"application/json\"]\n * @example http.request.header.x-forwarded-for=[\"1.2.3.4\", \"1.2.3.5\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured. Including all request headers can be a security risk - explicit configuration helps avoid leaking sensitive information.\n * The `User-Agent` header is already captured in the `user_agent.original` attribute. Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended.\n * The attribute value **MUST** consist of either multiple header values as an array of strings or a single-item array containing a possibly comma-concatenated string, depending on the way the HTTP library provides access to headers.\n */\nexport var ATTR_HTTP_REQUEST_HEADER = function (key) { return \"http.request.header.\" + key; };\n/**\n * HTTP request method.\n *\n * @example GET\n * @example POST\n * @example HEAD\n *\n * @note HTTP request method value **SHOULD** be \"known\" to the instrumentation.\n * By default, this convention defines \"known\" methods as the ones listed in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods)\n * and the PATCH method defined in [RFC5789](https://www.rfc-editor.org/rfc/rfc5789.html).\n *\n * If the HTTP request method is not known to instrumentation, it **MUST** set the `http.request.method` attribute to `_OTHER`.\n *\n * If the HTTP instrumentation could end up converting valid HTTP request methods to `_OTHER`, then it **MUST** provide a way to override\n * the list of known HTTP methods. If this override is done via environment variable, then the environment variable **MUST** be named\n * OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated list of case-sensitive known HTTP methods\n * (this list **MUST** be a full override of the default known method, it is not a list of known methods in addition to the defaults).\n *\n * HTTP method names are case-sensitive and `http.request.method` attribute value **MUST** match a known HTTP method name exactly.\n * Instrumentations for specific web frameworks that consider HTTP methods to be case insensitive, **SHOULD** populate a canonical equivalent.\n * Tracing instrumentations that do so, **MUST** also set `http.request.method_original` to the original value.\n */\nexport var ATTR_HTTP_REQUEST_METHOD = 'http.request.method';\n/**\n  * Enum value \"_OTHER\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_OTHER = \"_OTHER\";\n/**\n  * Enum value \"CONNECT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_CONNECT = \"CONNECT\";\n/**\n  * Enum value \"DELETE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_DELETE = \"DELETE\";\n/**\n  * Enum value \"GET\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_GET = \"GET\";\n/**\n  * Enum value \"HEAD\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_HEAD = \"HEAD\";\n/**\n  * Enum value \"OPTIONS\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_OPTIONS = \"OPTIONS\";\n/**\n  * Enum value \"PATCH\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_PATCH = \"PATCH\";\n/**\n  * Enum value \"POST\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_POST = \"POST\";\n/**\n  * Enum value \"PUT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_PUT = \"PUT\";\n/**\n  * Enum value \"TRACE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_TRACE = \"TRACE\";\n/**\n * Original HTTP method sent by the client in the request line.\n *\n * @example GeT\n * @example ACL\n * @example foo\n */\nexport var ATTR_HTTP_REQUEST_METHOD_ORIGINAL = 'http.request.method_original';\n/**\n * The ordinal number of request resending attempt (for any reason, including redirects).\n *\n * @example 3\n *\n * @note The resend count **SHOULD** be updated each time an HTTP request gets resent by the client, regardless of what was the cause of the resending (e.g. redirection, authorization failure, 503 Server Unavailable, network issues, or any other).\n */\nexport var ATTR_HTTP_REQUEST_RESEND_COUNT = 'http.request.resend_count';\n/**\n * HTTP response headers, `<key>` being the normalized HTTP Header name (lowercase), the value being the header values.\n *\n * @example http.response.header.content-type=[\"application/json\"]\n * @example http.response.header.my-custom-header=[\"abc\", \"def\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured. Including all response headers can be a security risk - explicit configuration helps avoid leaking sensitive information.\n * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended.\n * The attribute value **MUST** consist of either multiple header values as an array of strings or a single-item array containing a possibly comma-concatenated string, depending on the way the HTTP library provides access to headers.\n */\nexport var ATTR_HTTP_RESPONSE_HEADER = function (key) { return \"http.response.header.\" + key; };\n/**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n *\n * @example 200\n */\nexport var ATTR_HTTP_RESPONSE_STATUS_CODE = 'http.response.status_code';\n/**\n * The matched route, that is, the path template in the format used by the respective server framework.\n *\n * @example /users/:userID?\n * @example {controller}/{action}/{id?}\n *\n * @note **MUST NOT** be populated when this is not supported by the HTTP server framework as the route attribute should have low-cardinality and the URI path can NOT substitute it.\n * **SHOULD** include the [application root](/docs/http/http-spans.md#http-server-definitions) if there is one.\n */\nexport var ATTR_HTTP_ROUTE = 'http.route';\n/**\n * Name of the garbage collector action.\n *\n * @example end of minor GC\n * @example end of major GC\n *\n * @note Garbage collector action is generally obtained via [GarbageCollectionNotificationInfo#getGcAction()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcAction()).\n */\nexport var ATTR_JVM_GC_ACTION = 'jvm.gc.action';\n/**\n * Name of the garbage collector.\n *\n * @example G1 Young Generation\n * @example G1 Old Generation\n *\n * @note Garbage collector name is generally obtained via [GarbageCollectionNotificationInfo#getGcName()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcName()).\n */\nexport var ATTR_JVM_GC_NAME = 'jvm.gc.name';\n/**\n * Name of the memory pool.\n *\n * @example G1 Old Gen\n * @example G1 Eden space\n * @example G1 Survivor Space\n *\n * @note Pool names are generally obtained via [MemoryPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getName()).\n */\nexport var ATTR_JVM_MEMORY_POOL_NAME = 'jvm.memory.pool.name';\n/**\n * The type of memory.\n *\n * @example heap\n * @example non_heap\n */\nexport var ATTR_JVM_MEMORY_TYPE = 'jvm.memory.type';\n/**\n  * Enum value \"heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n  */\nexport var JVM_MEMORY_TYPE_VALUE_HEAP = \"heap\";\n/**\n  * Enum value \"non_heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n  */\nexport var JVM_MEMORY_TYPE_VALUE_NON_HEAP = \"non_heap\";\n/**\n * Whether the thread is daemon or not.\n */\nexport var ATTR_JVM_THREAD_DAEMON = 'jvm.thread.daemon';\n/**\n * State of the thread.\n *\n * @example runnable\n * @example blocked\n */\nexport var ATTR_JVM_THREAD_STATE = 'jvm.thread.state';\n/**\n  * Enum value \"blocked\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n  */\nexport var JVM_THREAD_STATE_VALUE_BLOCKED = \"blocked\";\n/**\n  * Enum value \"new\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n  */\nexport var JVM_THREAD_STATE_VALUE_NEW = \"new\";\n/**\n  * Enum value \"runnable\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n  */\nexport var JVM_THREAD_STATE_VALUE_RUNNABLE = \"runnable\";\n/**\n  * Enum value \"terminated\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n  */\nexport var JVM_THREAD_STATE_VALUE_TERMINATED = \"terminated\";\n/**\n  * Enum value \"timed_waiting\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n  */\nexport var JVM_THREAD_STATE_VALUE_TIMED_WAITING = \"timed_waiting\";\n/**\n  * Enum value \"waiting\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n  */\nexport var JVM_THREAD_STATE_VALUE_WAITING = \"waiting\";\n/**\n * Local address of the network connection - IP address or Unix domain socket name.\n *\n * @example 10.1.2.80\n * @example /tmp/my.sock\n */\nexport var ATTR_NETWORK_LOCAL_ADDRESS = 'network.local.address';\n/**\n * Local port number of the network connection.\n *\n * @example 65123\n */\nexport var ATTR_NETWORK_LOCAL_PORT = 'network.local.port';\n/**\n * Peer address of the network connection - IP address or Unix domain socket name.\n *\n * @example 10.1.2.80\n * @example /tmp/my.sock\n */\nexport var ATTR_NETWORK_PEER_ADDRESS = 'network.peer.address';\n/**\n * Peer port number of the network connection.\n *\n * @example 65123\n */\nexport var ATTR_NETWORK_PEER_PORT = 'network.peer.port';\n/**\n * [OSI application layer](https://osi-model.com/application-layer/) or non-OSI equivalent.\n *\n * @example amqp\n * @example http\n * @example mqtt\n *\n * @note The value **SHOULD** be normalized to lowercase.\n */\nexport var ATTR_NETWORK_PROTOCOL_NAME = 'network.protocol.name';\n/**\n * The actual version of the protocol used for network communication.\n *\n * @example 1.1\n * @example 2\n *\n * @note If protocol version is subject to negotiation (for example using [ALPN](https://www.rfc-editor.org/rfc/rfc7301.html)), this attribute **SHOULD** be set to the negotiated version. If the actual protocol version is not known, this attribute **SHOULD NOT** be set.\n */\nexport var ATTR_NETWORK_PROTOCOL_VERSION = 'network.protocol.version';\n/**\n * [OSI transport layer](https://osi-model.com/transport-layer/) or [inter-process communication method](https://wikipedia.org/wiki/Inter-process_communication).\n *\n * @example tcp\n * @example udp\n *\n * @note The value **SHOULD** be normalized to lowercase.\n *\n * Consider always setting the transport when setting a port number, since\n * a port number is ambiguous without knowing the transport. For example\n * different processes could be listening on TCP port 12345 and UDP port 12345.\n */\nexport var ATTR_NETWORK_TRANSPORT = 'network.transport';\n/**\n  * Enum value \"pipe\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n  */\nexport var NETWORK_TRANSPORT_VALUE_PIPE = \"pipe\";\n/**\n  * Enum value \"quic\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n  */\nexport var NETWORK_TRANSPORT_VALUE_QUIC = \"quic\";\n/**\n  * Enum value \"tcp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n  */\nexport var NETWORK_TRANSPORT_VALUE_TCP = \"tcp\";\n/**\n  * Enum value \"udp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n  */\nexport var NETWORK_TRANSPORT_VALUE_UDP = \"udp\";\n/**\n  * Enum value \"unix\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n  */\nexport var NETWORK_TRANSPORT_VALUE_UNIX = \"unix\";\n/**\n * [OSI network layer](https://osi-model.com/network-layer/) or non-OSI equivalent.\n *\n * @example ipv4\n * @example ipv6\n *\n * @note The value **SHOULD** be normalized to lowercase.\n */\nexport var ATTR_NETWORK_TYPE = 'network.type';\n/**\n  * Enum value \"ipv4\" for attribute {@link ATTR_NETWORK_TYPE}.\n  */\nexport var NETWORK_TYPE_VALUE_IPV4 = \"ipv4\";\n/**\n  * Enum value \"ipv6\" for attribute {@link ATTR_NETWORK_TYPE}.\n  */\nexport var NETWORK_TYPE_VALUE_IPV6 = \"ipv6\";\n/**\n * The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP).\n *\n * @example io.opentelemetry.contrib.mongodb\n */\nexport var ATTR_OTEL_SCOPE_NAME = 'otel.scope.name';\n/**\n * The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP).\n *\n * @example 1.0.0\n */\nexport var ATTR_OTEL_SCOPE_VERSION = 'otel.scope.version';\n/**\n * Name of the code, either \"OK\" or \"ERROR\". **MUST NOT** be set if the status code is UNSET.\n */\nexport var ATTR_OTEL_STATUS_CODE = 'otel.status_code';\n/**\n  * Enum value \"ERROR\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n  */\nexport var OTEL_STATUS_CODE_VALUE_ERROR = \"ERROR\";\n/**\n  * Enum value \"OK\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n  */\nexport var OTEL_STATUS_CODE_VALUE_OK = \"OK\";\n/**\n * Description of the Status if it has a value, otherwise not set.\n *\n * @example resource not found\n */\nexport var ATTR_OTEL_STATUS_DESCRIPTION = 'otel.status_description';\n/**\n * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the client side, and when communicating through an intermediary, `server.address` **SHOULD** represent the server address behind any intermediaries, for example proxies, if it's available.\n */\nexport var ATTR_SERVER_ADDRESS = 'server.address';\n/**\n * Server port number.\n *\n * @example 80\n * @example 8080\n * @example 443\n *\n * @note When observed from the client side, and when communicating through an intermediary, `server.port` **SHOULD** represent the server port behind any intermediaries, for example proxies, if it's available.\n */\nexport var ATTR_SERVER_PORT = 'server.port';\n/**\n * Logical name of the service.\n *\n * @example shoppingcart\n *\n * @note **MUST** be the same for all instances of horizontally scaled services. If the value was not specified, SDKs **MUST** fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value **MUST** be set to `unknown_service`.\n */\nexport var ATTR_SERVICE_NAME = 'service.name';\n/**\n * The version string of the service API or implementation. The format is not defined by these conventions.\n *\n * @example 2.0.0\n * @example a01dbef8a\n */\nexport var ATTR_SERVICE_VERSION = 'service.version';\n/**\n * SignalR HTTP connection closure status.\n *\n * @example app_shutdown\n * @example timeout\n */\nexport var ATTR_SIGNALR_CONNECTION_STATUS = 'signalr.connection.status';\n/**\n  * Enum value \"app_shutdown\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n  */\nexport var SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN = \"app_shutdown\";\n/**\n  * Enum value \"normal_closure\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n  */\nexport var SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE = \"normal_closure\";\n/**\n  * Enum value \"timeout\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n  */\nexport var SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT = \"timeout\";\n/**\n * [SignalR transport type](https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/TransportProtocols.md)\n *\n * @example web_sockets\n * @example long_polling\n */\nexport var ATTR_SIGNALR_TRANSPORT = 'signalr.transport';\n/**\n  * Enum value \"long_polling\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n  */\nexport var SIGNALR_TRANSPORT_VALUE_LONG_POLLING = \"long_polling\";\n/**\n  * Enum value \"server_sent_events\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n  */\nexport var SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS = \"server_sent_events\";\n/**\n  * Enum value \"web_sockets\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n  */\nexport var SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS = \"web_sockets\";\n/**\n * The [URI fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component\n *\n * @example SemConv\n */\nexport var ATTR_URL_FRAGMENT = 'url.fragment';\n/**\n * Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986)\n *\n * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv\n * @example //localhost\n *\n * @note For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment is not transmitted over HTTP, but if it is known, it **SHOULD** be included nevertheless.\n * `url.full` **MUST NOT** contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case username and password **SHOULD** be redacted and attribute's value **SHOULD** be `https://REDACTED:REDACTED@www.example.com/`.\n * `url.full` **SHOULD** capture the absolute URL when it is available (or can be reconstructed). Sensitive content provided in `url.full` **SHOULD** be scrubbed when instrumentations can identify it.\n */\nexport var ATTR_URL_FULL = 'url.full';\n/**\n * The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component\n *\n * @example /search\n *\n * @note Sensitive content provided in `url.path` **SHOULD** be scrubbed when instrumentations can identify it.\n */\nexport var ATTR_URL_PATH = 'url.path';\n/**\n * The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component\n *\n * @example q=OpenTelemetry\n *\n * @note Sensitive content provided in `url.query` **SHOULD** be scrubbed when instrumentations can identify it.\n */\nexport var ATTR_URL_QUERY = 'url.query';\n/**\n * The [URI scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component identifying the used protocol.\n *\n * @example https\n * @example ftp\n * @example telnet\n */\nexport var ATTR_URL_SCHEME = 'url.scheme';\n/**\n * Value of the [HTTP User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) header sent by the client.\n *\n * @example CERN-LineMode/2.15 libwww/2.17b3\n * @example Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1\n * @example YourApp/1.0.0 grpc-java-okhttp/1.27.2\n */\nexport var ATTR_USER_AGENT_ORIGINAL = 'user_agent.original';\n//# sourceMappingURL=stable_attributes.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/register/stable/metrics.ts.j2\n//----------------------------------------------------------------------------------------------------------\n/**\n * Number of exceptions caught by exception handling middleware.\n *\n * @note Meter name: `Microsoft.AspNetCore.Diagnostics`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS = 'aspnetcore.diagnostics.exceptions';\n/**\n * Number of requests that are currently active on the server that hold a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES = 'aspnetcore.rate_limiting.active_request_leases';\n/**\n * Number of requests that are currently queued, waiting to acquire a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS = 'aspnetcore.rate_limiting.queued_requests';\n/**\n * The time the request spent in a queue waiting to acquire a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE = 'aspnetcore.rate_limiting.request.time_in_queue';\n/**\n * The duration of rate limiting lease held by requests on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION = 'aspnetcore.rate_limiting.request_lease.duration';\n/**\n * Number of requests that tried to acquire a rate limiting lease.\n *\n * @note Requests could be:\n *\n *   - Rejected by global or endpoint rate limiting policies\n *   - Canceled while waiting for the lease.\n *\n * Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS = 'aspnetcore.rate_limiting.requests';\n/**\n * Number of requests that were attempted to be matched to an endpoint.\n *\n * @note Meter name: `Microsoft.AspNetCore.Routing`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS = 'aspnetcore.routing.match_attempts';\n/**\n * Duration of HTTP client requests.\n */\nexport var METRIC_HTTP_CLIENT_REQUEST_DURATION = 'http.client.request.duration';\n/**\n * Duration of HTTP server requests.\n */\nexport var METRIC_HTTP_SERVER_REQUEST_DURATION = 'http.server.request.duration';\n/**\n * Number of classes currently loaded.\n */\nexport var METRIC_JVM_CLASS_COUNT = 'jvm.class.count';\n/**\n * Number of classes loaded since JVM start.\n */\nexport var METRIC_JVM_CLASS_LOADED = 'jvm.class.loaded';\n/**\n * Number of classes unloaded since JVM start.\n */\nexport var METRIC_JVM_CLASS_UNLOADED = 'jvm.class.unloaded';\n/**\n * Number of processors available to the Java virtual machine.\n */\nexport var METRIC_JVM_CPU_COUNT = 'jvm.cpu.count';\n/**\n * Recent CPU utilization for the process as reported by the JVM.\n *\n * @note The value range is [0.0,1.0]. This utilization is not defined as being for the specific interval since last measurement (unlike `system.cpu.utilization`). [Reference](https://docs.oracle.com/en/java/javase/17/docs/api/jdk.management/com/sun/management/OperatingSystemMXBean.html#getProcessCpuLoad()).\n */\nexport var METRIC_JVM_CPU_RECENT_UTILIZATION = 'jvm.cpu.recent_utilization';\n/**\n * CPU time used by the process as reported by the JVM.\n */\nexport var METRIC_JVM_CPU_TIME = 'jvm.cpu.time';\n/**\n * Duration of JVM garbage collection actions.\n */\nexport var METRIC_JVM_GC_DURATION = 'jvm.gc.duration';\n/**\n * Measure of memory committed.\n */\nexport var METRIC_JVM_MEMORY_COMMITTED = 'jvm.memory.committed';\n/**\n * Measure of max obtainable memory.\n */\nexport var METRIC_JVM_MEMORY_LIMIT = 'jvm.memory.limit';\n/**\n * Measure of memory used.\n */\nexport var METRIC_JVM_MEMORY_USED = 'jvm.memory.used';\n/**\n * Measure of memory used, as measured after the most recent garbage collection event on this pool.\n */\nexport var METRIC_JVM_MEMORY_USED_AFTER_LAST_GC = 'jvm.memory.used_after_last_gc';\n/**\n * Number of executing platform threads.\n */\nexport var METRIC_JVM_THREAD_COUNT = 'jvm.thread.count';\n/**\n * Number of connections that are currently active on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_ACTIVE_CONNECTIONS = 'kestrel.active_connections';\n/**\n * Number of TLS handshakes that are currently in progress on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES = 'kestrel.active_tls_handshakes';\n/**\n * The duration of connections on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_CONNECTION_DURATION = 'kestrel.connection.duration';\n/**\n * Number of connections that are currently queued and are waiting to start.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_QUEUED_CONNECTIONS = 'kestrel.queued_connections';\n/**\n * Number of HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are currently queued and are waiting to start.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_QUEUED_REQUESTS = 'kestrel.queued_requests';\n/**\n * Number of connections rejected by the server.\n *\n * @note Connections are rejected when the currently active count exceeds the value configured with `MaxConcurrentConnections`.\n * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_REJECTED_CONNECTIONS = 'kestrel.rejected_connections';\n/**\n * The duration of TLS handshakes on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_TLS_HANDSHAKE_DURATION = 'kestrel.tls_handshake.duration';\n/**\n * Number of connections that are currently upgraded (WebSockets). .\n *\n * @note The counter only tracks HTTP/1.1 connections.\n *\n * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_UPGRADED_CONNECTIONS = 'kestrel.upgraded_connections';\n/**\n * Number of connections that are currently active on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS = 'signalr.server.active_connections';\n/**\n * The duration of connections on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_SIGNALR_SERVER_CONNECTION_DURATION = 'signalr.server.connection.duration';\n//# sourceMappingURL=stable_metrics.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only two-levels deep, and\n * should not cause problems for tree-shakers.\n */\n// Deprecated. These are kept around for compatibility purposes\nexport * from './trace';\nexport * from './resource';\n// Use these instead\nexport * from './stable_attributes';\nexport * from './stable_metrics';\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SDK_INFO = void 0;\nconst version_1 = require(\"../../version\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\n/** Constants describing the SDK in use */\nexports.SDK_INFO = {\n    [semantic_conventions_1.SEMRESATTRS_TELEMETRY_SDK_NAME]: 'opentelemetry',\n    [semantic_conventions_1.SEMRESATTRS_PROCESS_RUNTIME_NAME]: 'node',\n    [semantic_conventions_1.SEMRESATTRS_TELEMETRY_SDK_LANGUAGE]: semantic_conventions_1.TELEMETRYSDKLANGUAGEVALUES_NODEJS,\n    [semantic_conventions_1.SEMRESATTRS_TELEMETRY_SDK_VERSION]: version_1.VERSION,\n};\n//# sourceMappingURL=sdk-info.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unrefTimer = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction unrefTimer(timer) {\n    timer.unref();\n}\nexports.unrefTimer = unrefTimer;\n//# sourceMappingURL=timer-util.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unrefTimer = exports.SDK_INFO = exports.otperformance = exports.RandomIdGenerator = exports.hexToBase64 = exports._globalThis = exports.getEnv = exports.getEnvWithoutDefaults = void 0;\nvar environment_1 = require(\"./environment\");\nObject.defineProperty(exports, \"getEnvWithoutDefaults\", { enumerable: true, get: function () { return environment_1.getEnvWithoutDefaults; } });\nObject.defineProperty(exports, \"getEnv\", { enumerable: true, get: function () { return environment_1.getEnv; } });\nvar globalThis_1 = require(\"./globalThis\");\nObject.defineProperty(exports, \"_globalThis\", { enumerable: true, get: function () { return globalThis_1._globalThis; } });\nvar hex_to_base64_1 = require(\"./hex-to-base64\");\nObject.defineProperty(exports, \"hexToBase64\", { enumerable: true, get: function () { return hex_to_base64_1.hexToBase64; } });\nvar RandomIdGenerator_1 = require(\"./RandomIdGenerator\");\nObject.defineProperty(exports, \"RandomIdGenerator\", { enumerable: true, get: function () { return RandomIdGenerator_1.RandomIdGenerator; } });\nvar performance_1 = require(\"./performance\");\nObject.defineProperty(exports, \"otperformance\", { enumerable: true, get: function () { return performance_1.otperformance; } });\nvar sdk_info_1 = require(\"./sdk-info\");\nObject.defineProperty(exports, \"SDK_INFO\", { enumerable: true, get: function () { return sdk_info_1.SDK_INFO; } });\nvar timer_util_1 = require(\"./timer-util\");\nObject.defineProperty(exports, \"unrefTimer\", { enumerable: true, get: function () { return timer_util_1.unrefTimer; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unrefTimer = exports.otperformance = exports.hexToBase64 = exports.getEnvWithoutDefaults = exports.getEnv = exports._globalThis = exports.SDK_INFO = exports.RandomIdGenerator = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"RandomIdGenerator\", { enumerable: true, get: function () { return node_1.RandomIdGenerator; } });\nObject.defineProperty(exports, \"SDK_INFO\", { enumerable: true, get: function () { return node_1.SDK_INFO; } });\nObject.defineProperty(exports, \"_globalThis\", { enumerable: true, get: function () { return node_1._globalThis; } });\nObject.defineProperty(exports, \"getEnv\", { enumerable: true, get: function () { return node_1.getEnv; } });\nObject.defineProperty(exports, \"getEnvWithoutDefaults\", { enumerable: true, get: function () { return node_1.getEnvWithoutDefaults; } });\nObject.defineProperty(exports, \"hexToBase64\", { enumerable: true, get: function () { return node_1.hexToBase64; } });\nObject.defineProperty(exports, \"otperformance\", { enumerable: true, get: function () { return node_1.otperformance; } });\nObject.defineProperty(exports, \"unrefTimer\", { enumerable: true, get: function () { return node_1.unrefTimer; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addHrTimes = exports.isTimeInput = exports.isTimeInputHrTime = exports.hrTimeToMicroseconds = exports.hrTimeToMilliseconds = exports.hrTimeToNanoseconds = exports.hrTimeToTimeStamp = exports.hrTimeDuration = exports.timeInputToHrTime = exports.hrTime = exports.getTimeOrigin = exports.millisToHrTime = void 0;\nconst platform_1 = require(\"../platform\");\nconst NANOSECOND_DIGITS = 9;\nconst NANOSECOND_DIGITS_IN_MILLIS = 6;\nconst MILLISECONDS_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS_IN_MILLIS);\nconst SECOND_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS);\n/**\n * Converts a number of milliseconds from epoch to HrTime([seconds, remainder in nanoseconds]).\n * @param epochMillis\n */\nfunction millisToHrTime(epochMillis) {\n    const epochSeconds = epochMillis / 1000;\n    // Decimals only.\n    const seconds = Math.trunc(epochSeconds);\n    // Round sub-nanosecond accuracy to nanosecond.\n    const nanos = Math.round((epochMillis % 1000) * MILLISECONDS_TO_NANOSECONDS);\n    return [seconds, nanos];\n}\nexports.millisToHrTime = millisToHrTime;\nfunction getTimeOrigin() {\n    let timeOrigin = platform_1.otperformance.timeOrigin;\n    if (typeof timeOrigin !== 'number') {\n        const perf = platform_1.otperformance;\n        timeOrigin = perf.timing && perf.timing.fetchStart;\n    }\n    return timeOrigin;\n}\nexports.getTimeOrigin = getTimeOrigin;\n/**\n * Returns an hrtime calculated via performance component.\n * @param performanceNow\n */\nfunction hrTime(performanceNow) {\n    const timeOrigin = millisToHrTime(getTimeOrigin());\n    const now = millisToHrTime(typeof performanceNow === 'number' ? performanceNow : platform_1.otperformance.now());\n    return addHrTimes(timeOrigin, now);\n}\nexports.hrTime = hrTime;\n/**\n *\n * Converts a TimeInput to an HrTime, defaults to _hrtime().\n * @param time\n */\nfunction timeInputToHrTime(time) {\n    // process.hrtime\n    if (isTimeInputHrTime(time)) {\n        return time;\n    }\n    else if (typeof time === 'number') {\n        // Must be a performance.now() if it's smaller than process start time.\n        if (time < getTimeOrigin()) {\n            return hrTime(time);\n        }\n        else {\n            // epoch milliseconds or performance.timeOrigin\n            return millisToHrTime(time);\n        }\n    }\n    else if (time instanceof Date) {\n        return millisToHrTime(time.getTime());\n    }\n    else {\n        throw TypeError('Invalid input type');\n    }\n}\nexports.timeInputToHrTime = timeInputToHrTime;\n/**\n * Returns a duration of two hrTime.\n * @param startTime\n * @param endTime\n */\nfunction hrTimeDuration(startTime, endTime) {\n    let seconds = endTime[0] - startTime[0];\n    let nanos = endTime[1] - startTime[1];\n    // overflow\n    if (nanos < 0) {\n        seconds -= 1;\n        // negate\n        nanos += SECOND_TO_NANOSECONDS;\n    }\n    return [seconds, nanos];\n}\nexports.hrTimeDuration = hrTimeDuration;\n/**\n * Convert hrTime to timestamp, for example \"2019-05-14T17:00:00.000123456Z\"\n * @param time\n */\nfunction hrTimeToTimeStamp(time) {\n    const precision = NANOSECOND_DIGITS;\n    const tmp = `${'0'.repeat(precision)}${time[1]}Z`;\n    const nanoString = tmp.substring(tmp.length - precision - 1);\n    const date = new Date(time[0] * 1000).toISOString();\n    return date.replace('000Z', nanoString);\n}\nexports.hrTimeToTimeStamp = hrTimeToTimeStamp;\n/**\n * Convert hrTime to nanoseconds.\n * @param time\n */\nfunction hrTimeToNanoseconds(time) {\n    return time[0] * SECOND_TO_NANOSECONDS + time[1];\n}\nexports.hrTimeToNanoseconds = hrTimeToNanoseconds;\n/**\n * Convert hrTime to milliseconds.\n * @param time\n */\nfunction hrTimeToMilliseconds(time) {\n    return time[0] * 1e3 + time[1] / 1e6;\n}\nexports.hrTimeToMilliseconds = hrTimeToMilliseconds;\n/**\n * Convert hrTime to microseconds.\n * @param time\n */\nfunction hrTimeToMicroseconds(time) {\n    return time[0] * 1e6 + time[1] / 1e3;\n}\nexports.hrTimeToMicroseconds = hrTimeToMicroseconds;\n/**\n * check if time is HrTime\n * @param value\n */\nfunction isTimeInputHrTime(value) {\n    return (Array.isArray(value) &&\n        value.length === 2 &&\n        typeof value[0] === 'number' &&\n        typeof value[1] === 'number');\n}\nexports.isTimeInputHrTime = isTimeInputHrTime;\n/**\n * check if input value is a correct types.TimeInput\n * @param value\n */\nfunction isTimeInput(value) {\n    return (isTimeInputHrTime(value) ||\n        typeof value === 'number' ||\n        value instanceof Date);\n}\nexports.isTimeInput = isTimeInput;\n/**\n * Given 2 HrTime formatted times, return their sum as an HrTime.\n */\nfunction addHrTimes(time1, time2) {\n    const out = [time1[0] + time2[0], time1[1] + time2[1]];\n    // Nanoseconds\n    if (out[1] >= SECOND_TO_NANOSECONDS) {\n        out[1] -= SECOND_TO_NANOSECONDS;\n        out[0] += 1;\n    }\n    return out;\n}\nexports.addHrTimes = addHrTimes;\n//# sourceMappingURL=time.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExportResultCode = void 0;\nvar ExportResultCode;\n(function (ExportResultCode) {\n    ExportResultCode[ExportResultCode[\"SUCCESS\"] = 0] = \"SUCCESS\";\n    ExportResultCode[ExportResultCode[\"FAILED\"] = 1] = \"FAILED\";\n})(ExportResultCode = exports.ExportResultCode || (exports.ExportResultCode = {}));\n//# sourceMappingURL=ExportResult.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompositePropagator = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\n/** Combines multiple propagators into a single propagator. */\nclass CompositePropagator {\n    /**\n     * Construct a composite propagator from a list of propagators.\n     *\n     * @param [config] Configuration object for composite propagator\n     */\n    constructor(config = {}) {\n        var _a;\n        this._propagators = (_a = config.propagators) !== null && _a !== void 0 ? _a : [];\n        this._fields = Array.from(new Set(this._propagators\n            // older propagators may not have fields function, null check to be sure\n            .map(p => (typeof p.fields === 'function' ? p.fields() : []))\n            .reduce((x, y) => x.concat(y), [])));\n    }\n    /**\n     * Run each of the configured propagators with the given context and carrier.\n     * Propagators are run in the order they are configured, so if multiple\n     * propagators write the same carrier key, the propagator later in the list\n     * will \"win\".\n     *\n     * @param context Context to inject\n     * @param carrier Carrier into which context will be injected\n     */\n    inject(context, carrier, setter) {\n        for (const propagator of this._propagators) {\n            try {\n                propagator.inject(context, carrier, setter);\n            }\n            catch (err) {\n                api_1.diag.warn(`Failed to inject with ${propagator.constructor.name}. Err: ${err.message}`);\n            }\n        }\n    }\n    /**\n     * Run each of the configured propagators with the given context and carrier.\n     * Propagators are run in the order they are configured, so if multiple\n     * propagators write the same context key, the propagator later in the list\n     * will \"win\".\n     *\n     * @param context Context to add values to\n     * @param carrier Carrier from which to extract context\n     */\n    extract(context, carrier, getter) {\n        return this._propagators.reduce((ctx, propagator) => {\n            try {\n                return propagator.extract(ctx, carrier, getter);\n            }\n            catch (err) {\n                api_1.diag.warn(`Failed to extract with ${propagator.constructor.name}. Err: ${err.message}`);\n            }\n            return ctx;\n        }, context);\n    }\n    fields() {\n        // return a new array so our fields cannot be modified\n        return this._fields.slice();\n    }\n}\nexports.CompositePropagator = CompositePropagator;\n//# sourceMappingURL=composite.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateValue = exports.validateKey = void 0;\nconst VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]';\nconst VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`;\nconst VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`;\nconst VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`);\nconst VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/;\nconst INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/;\n/**\n * Key is opaque string up to 256 characters printable. It MUST begin with a\n * lowercase letter, and can only contain lowercase letters a-z, digits 0-9,\n * underscores _, dashes -, asterisks *, and forward slashes /.\n * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the\n * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key.\n * see https://www.w3.org/TR/trace-context/#key\n */\nfunction validateKey(key) {\n    return VALID_KEY_REGEX.test(key);\n}\nexports.validateKey = validateKey;\n/**\n * Value is opaque string up to 256 characters printable ASCII RFC0020\n * characters (i.e., the range 0x20 to 0x7E) except comma , and =.\n */\nfunction validateValue(value) {\n    return (VALID_VALUE_BASE_REGEX.test(value) &&\n        !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value));\n}\nexports.validateValue = validateValue;\n//# sourceMappingURL=validators.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceState = void 0;\nconst validators_1 = require(\"../internal/validators\");\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n/**\n * TraceState must be a class and not a simple object type because of the spec\n * requirement (https://www.w3.org/TR/trace-context/#tracestate-field).\n *\n * Here is the list of allowed mutations:\n * - New key-value pair should be added into the beginning of the list\n * - The value of any key can be updated. Modified keys MUST be moved to the\n * beginning of the list.\n */\nclass TraceState {\n    constructor(rawTraceState) {\n        this._internalState = new Map();\n        if (rawTraceState)\n            this._parse(rawTraceState);\n    }\n    set(key, value) {\n        // TODO: Benchmark the different approaches(map vs list) and\n        // use the faster one.\n        const traceState = this._clone();\n        if (traceState._internalState.has(key)) {\n            traceState._internalState.delete(key);\n        }\n        traceState._internalState.set(key, value);\n        return traceState;\n    }\n    unset(key) {\n        const traceState = this._clone();\n        traceState._internalState.delete(key);\n        return traceState;\n    }\n    get(key) {\n        return this._internalState.get(key);\n    }\n    serialize() {\n        return this._keys()\n            .reduce((agg, key) => {\n            agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n            return agg;\n        }, [])\n            .join(LIST_MEMBERS_SEPARATOR);\n    }\n    _parse(rawTraceState) {\n        if (rawTraceState.length > MAX_TRACE_STATE_LEN)\n            return;\n        this._internalState = rawTraceState\n            .split(LIST_MEMBERS_SEPARATOR)\n            .reverse() // Store in reverse so new keys (.set(...)) will be placed at the beginning\n            .reduce((agg, part) => {\n            const listMember = part.trim(); // Optional Whitespace (OWS) handling\n            const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER);\n            if (i !== -1) {\n                const key = listMember.slice(0, i);\n                const value = listMember.slice(i + 1, part.length);\n                if ((0, validators_1.validateKey)(key) && (0, validators_1.validateValue)(value)) {\n                    agg.set(key, value);\n                }\n                else {\n                    // TODO: Consider to add warning log\n                }\n            }\n            return agg;\n        }, new Map());\n        // Because of the reverse() requirement, trunc must be done after map is created\n        if (this._internalState.size > MAX_TRACE_STATE_ITEMS) {\n            this._internalState = new Map(Array.from(this._internalState.entries())\n                .reverse() // Use reverse same as original tracestate parse chain\n                .slice(0, MAX_TRACE_STATE_ITEMS));\n        }\n    }\n    _keys() {\n        return Array.from(this._internalState.keys()).reverse();\n    }\n    _clone() {\n        const traceState = new TraceState();\n        traceState._internalState = new Map(this._internalState);\n        return traceState;\n    }\n}\nexports.TraceState = TraceState;\n//# sourceMappingURL=TraceState.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.W3CTraceContextPropagator = exports.parseTraceParent = exports.TRACE_STATE_HEADER = exports.TRACE_PARENT_HEADER = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst suppress_tracing_1 = require(\"./suppress-tracing\");\nconst TraceState_1 = require(\"./TraceState\");\nexports.TRACE_PARENT_HEADER = 'traceparent';\nexports.TRACE_STATE_HEADER = 'tracestate';\nconst VERSION = '00';\nconst VERSION_PART = '(?!ff)[\\\\da-f]{2}';\nconst TRACE_ID_PART = '(?![0]{32})[\\\\da-f]{32}';\nconst PARENT_ID_PART = '(?![0]{16})[\\\\da-f]{16}';\nconst FLAGS_PART = '[\\\\da-f]{2}';\nconst TRACE_PARENT_REGEX = new RegExp(`^\\\\s?(${VERSION_PART})-(${TRACE_ID_PART})-(${PARENT_ID_PART})-(${FLAGS_PART})(-.*)?\\\\s?$`);\n/**\n * Parses information from the [traceparent] span tag and converts it into {@link SpanContext}\n * @param traceParent - A meta property that comes from server.\n *     It should be dynamically generated server side to have the server's request trace Id,\n *     a parent span Id that was set on the server's request span,\n *     and the trace flags to indicate the server's sampling decision\n *     (01 = sampled, 00 = not sampled).\n *     for example: '{version}-{traceId}-{spanId}-{sampleDecision}'\n *     For more information see {@link https://www.w3.org/TR/trace-context/}\n */\nfunction parseTraceParent(traceParent) {\n    const match = TRACE_PARENT_REGEX.exec(traceParent);\n    if (!match)\n        return null;\n    // According to the specification the implementation should be compatible\n    // with future versions. If there are more parts, we only reject it if it's using version 00\n    // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent\n    if (match[1] === '00' && match[5])\n        return null;\n    return {\n        traceId: match[2],\n        spanId: match[3],\n        traceFlags: parseInt(match[4], 16),\n    };\n}\nexports.parseTraceParent = parseTraceParent;\n/**\n * Propagates {@link SpanContext} through Trace Context format propagation.\n *\n * Based on the Trace Context specification:\n * https://www.w3.org/TR/trace-context/\n */\nclass W3CTraceContextPropagator {\n    inject(context, carrier, setter) {\n        const spanContext = api_1.trace.getSpanContext(context);\n        if (!spanContext ||\n            (0, suppress_tracing_1.isTracingSuppressed)(context) ||\n            !(0, api_1.isSpanContextValid)(spanContext))\n            return;\n        const traceParent = `${VERSION}-${spanContext.traceId}-${spanContext.spanId}-0${Number(spanContext.traceFlags || api_1.TraceFlags.NONE).toString(16)}`;\n        setter.set(carrier, exports.TRACE_PARENT_HEADER, traceParent);\n        if (spanContext.traceState) {\n            setter.set(carrier, exports.TRACE_STATE_HEADER, spanContext.traceState.serialize());\n        }\n    }\n    extract(context, carrier, getter) {\n        const traceParentHeader = getter.get(carrier, exports.TRACE_PARENT_HEADER);\n        if (!traceParentHeader)\n            return context;\n        const traceParent = Array.isArray(traceParentHeader)\n            ? traceParentHeader[0]\n            : traceParentHeader;\n        if (typeof traceParent !== 'string')\n            return context;\n        const spanContext = parseTraceParent(traceParent);\n        if (!spanContext)\n            return context;\n        spanContext.isRemote = true;\n        const traceStateHeader = getter.get(carrier, exports.TRACE_STATE_HEADER);\n        if (traceStateHeader) {\n            // If more than one `tracestate` header is found, we merge them into a\n            // single header.\n            const state = Array.isArray(traceStateHeader)\n                ? traceStateHeader.join(',')\n                : traceStateHeader;\n            spanContext.traceState = new TraceState_1.TraceState(typeof state === 'string' ? state : undefined);\n        }\n        return api_1.trace.setSpanContext(context, spanContext);\n    }\n    fields() {\n        return [exports.TRACE_PARENT_HEADER, exports.TRACE_STATE_HEADER];\n    }\n}\nexports.W3CTraceContextPropagator = W3CTraceContextPropagator;\n//# sourceMappingURL=W3CTraceContextPropagator.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRPCMetadata = exports.deleteRPCMetadata = exports.setRPCMetadata = exports.RPCType = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst RPC_METADATA_KEY = (0, api_1.createContextKey)('OpenTelemetry SDK Context Key RPC_METADATA');\nvar RPCType;\n(function (RPCType) {\n    RPCType[\"HTTP\"] = \"http\";\n})(RPCType = exports.RPCType || (exports.RPCType = {}));\nfunction setRPCMetadata(context, meta) {\n    return context.setValue(RPC_METADATA_KEY, meta);\n}\nexports.setRPCMetadata = setRPCMetadata;\nfunction deleteRPCMetadata(context) {\n    return context.deleteValue(RPC_METADATA_KEY);\n}\nexports.deleteRPCMetadata = deleteRPCMetadata;\nfunction getRPCMetadata(context) {\n    return context.getValue(RPC_METADATA_KEY);\n}\nexports.getRPCMetadata = getRPCMetadata;\n//# sourceMappingURL=rpc-metadata.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AlwaysOffSampler = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\n/**\n * @deprecated Use the one defined in @opentelemetry/sdk-trace-base instead.\n * Sampler that samples no traces.\n */\nclass AlwaysOffSampler {\n    shouldSample() {\n        return {\n            decision: api_1.SamplingDecision.NOT_RECORD,\n        };\n    }\n    toString() {\n        return 'AlwaysOffSampler';\n    }\n}\nexports.AlwaysOffSampler = AlwaysOffSampler;\n//# sourceMappingURL=AlwaysOffSampler.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AlwaysOnSampler = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\n/**\n * @deprecated Use the one defined in @opentelemetry/sdk-trace-base instead.\n * Sampler that samples all traces.\n */\nclass AlwaysOnSampler {\n    shouldSample() {\n        return {\n            decision: api_1.SamplingDecision.RECORD_AND_SAMPLED,\n        };\n    }\n    toString() {\n        return 'AlwaysOnSampler';\n    }\n}\nexports.AlwaysOnSampler = AlwaysOnSampler;\n//# sourceMappingURL=AlwaysOnSampler.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ParentBasedSampler = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst global_error_handler_1 = require(\"../../common/global-error-handler\");\nconst AlwaysOffSampler_1 = require(\"./AlwaysOffSampler\");\nconst AlwaysOnSampler_1 = require(\"./AlwaysOnSampler\");\n/**\n * @deprecated Use the one defined in @opentelemetry/sdk-trace-base instead.\n * A composite sampler that either respects the parent span's sampling decision\n * or delegates to `delegateSampler` for root spans.\n */\nclass ParentBasedSampler {\n    constructor(config) {\n        var _a, _b, _c, _d;\n        this._root = config.root;\n        if (!this._root) {\n            (0, global_error_handler_1.globalErrorHandler)(new Error('ParentBasedSampler must have a root sampler configured'));\n            this._root = new AlwaysOnSampler_1.AlwaysOnSampler();\n        }\n        this._remoteParentSampled =\n            (_a = config.remoteParentSampled) !== null && _a !== void 0 ? _a : new AlwaysOnSampler_1.AlwaysOnSampler();\n        this._remoteParentNotSampled =\n            (_b = config.remoteParentNotSampled) !== null && _b !== void 0 ? _b : new AlwaysOffSampler_1.AlwaysOffSampler();\n        this._localParentSampled =\n            (_c = config.localParentSampled) !== null && _c !== void 0 ? _c : new AlwaysOnSampler_1.AlwaysOnSampler();\n        this._localParentNotSampled =\n            (_d = config.localParentNotSampled) !== null && _d !== void 0 ? _d : new AlwaysOffSampler_1.AlwaysOffSampler();\n    }\n    shouldSample(context, traceId, spanName, spanKind, attributes, links) {\n        const parentContext = api_1.trace.getSpanContext(context);\n        if (!parentContext || !(0, api_1.isSpanContextValid)(parentContext)) {\n            return this._root.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n        }\n        if (parentContext.isRemote) {\n            if (parentContext.traceFlags & api_1.TraceFlags.SAMPLED) {\n                return this._remoteParentSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n            }\n            return this._remoteParentNotSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n        }\n        if (parentContext.traceFlags & api_1.TraceFlags.SAMPLED) {\n            return this._localParentSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n        }\n        return this._localParentNotSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n    }\n    toString() {\n        return `ParentBased{root=${this._root.toString()}, remoteParentSampled=${this._remoteParentSampled.toString()}, remoteParentNotSampled=${this._remoteParentNotSampled.toString()}, localParentSampled=${this._localParentSampled.toString()}, localParentNotSampled=${this._localParentNotSampled.toString()}}`;\n    }\n}\nexports.ParentBasedSampler = ParentBasedSampler;\n//# sourceMappingURL=ParentBasedSampler.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceIdRatioBasedSampler = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\n/**\n * @deprecated Use the one defined in @opentelemetry/sdk-trace-base instead.\n * Sampler that samples a given fraction of traces based of trace id deterministically.\n */\nclass TraceIdRatioBasedSampler {\n    constructor(_ratio = 0) {\n        this._ratio = _ratio;\n        this._ratio = this._normalize(_ratio);\n        this._upperBound = Math.floor(this._ratio * 0xffffffff);\n    }\n    shouldSample(context, traceId) {\n        return {\n            decision: (0, api_1.isValidTraceId)(traceId) && this._accumulate(traceId) < this._upperBound\n                ? api_1.SamplingDecision.RECORD_AND_SAMPLED\n                : api_1.SamplingDecision.NOT_RECORD,\n        };\n    }\n    toString() {\n        return `TraceIdRatioBased{${this._ratio}}`;\n    }\n    _normalize(ratio) {\n        if (typeof ratio !== 'number' || isNaN(ratio))\n            return 0;\n        return ratio >= 1 ? 1 : ratio <= 0 ? 0 : ratio;\n    }\n    _accumulate(traceId) {\n        let accumulation = 0;\n        for (let i = 0; i < traceId.length / 8; i++) {\n            const pos = i * 8;\n            const part = parseInt(traceId.slice(pos, pos + 8), 16);\n            accumulation = (accumulation ^ part) >>> 0;\n        }\n        return accumulation;\n    }\n}\nexports.TraceIdRatioBasedSampler = TraceIdRatioBasedSampler;\n//# sourceMappingURL=TraceIdRatioBasedSampler.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPlainObject = void 0;\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * based on lodash in order to support esm builds without esModuleInterop.\n * lodash is using MIT License.\n **/\nconst objectTag = '[object Object]';\nconst nullTag = '[object Null]';\nconst undefinedTag = '[object Undefined]';\nconst funcProto = Function.prototype;\nconst funcToString = funcProto.toString;\nconst objectCtorString = funcToString.call(Object);\nconst getPrototype = overArg(Object.getPrototypeOf, Object);\nconst objectProto = Object.prototype;\nconst hasOwnProperty = objectProto.hasOwnProperty;\nconst symToStringTag = Symbol ? Symbol.toStringTag : undefined;\nconst nativeObjectToString = objectProto.toString;\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n    return function (arg) {\n        return func(transform(arg));\n    };\n}\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n    if (!isObjectLike(value) || baseGetTag(value) !== objectTag) {\n        return false;\n    }\n    const proto = getPrototype(value);\n    if (proto === null) {\n        return true;\n    }\n    const Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n    return (typeof Ctor == 'function' &&\n        Ctor instanceof Ctor &&\n        funcToString.call(Ctor) === objectCtorString);\n}\nexports.isPlainObject = isPlainObject;\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n    return value != null && typeof value == 'object';\n}\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n    if (value == null) {\n        return value === undefined ? undefinedTag : nullTag;\n    }\n    return symToStringTag && symToStringTag in Object(value)\n        ? getRawTag(value)\n        : objectToString(value);\n}\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n    const isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];\n    let unmasked = false;\n    try {\n        value[symToStringTag] = undefined;\n        unmasked = true;\n    }\n    catch (e) {\n        // silence\n    }\n    const result = nativeObjectToString.call(value);\n    if (unmasked) {\n        if (isOwn) {\n            value[symToStringTag] = tag;\n        }\n        else {\n            delete value[symToStringTag];\n        }\n    }\n    return result;\n}\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n    return nativeObjectToString.call(value);\n}\n//# sourceMappingURL=lodash.merge.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.merge = void 0;\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst lodash_merge_1 = require(\"./lodash.merge\");\nconst MAX_LEVEL = 20;\n/**\n * Merges objects together\n * @param args - objects / values to be merged\n */\nfunction merge(...args) {\n    let result = args.shift();\n    const objects = new WeakMap();\n    while (args.length > 0) {\n        result = mergeTwoObjects(result, args.shift(), 0, objects);\n    }\n    return result;\n}\nexports.merge = merge;\nfunction takeValue(value) {\n    if (isArray(value)) {\n        return value.slice();\n    }\n    return value;\n}\n/**\n * Merges two objects\n * @param one - first object\n * @param two - second object\n * @param level - current deep level\n * @param objects - objects holder that has been already referenced - to prevent\n * cyclic dependency\n */\nfunction mergeTwoObjects(one, two, level = 0, objects) {\n    let result;\n    if (level > MAX_LEVEL) {\n        return undefined;\n    }\n    level++;\n    if (isPrimitive(one) || isPrimitive(two) || isFunction(two)) {\n        result = takeValue(two);\n    }\n    else if (isArray(one)) {\n        result = one.slice();\n        if (isArray(two)) {\n            for (let i = 0, j = two.length; i < j; i++) {\n                result.push(takeValue(two[i]));\n            }\n        }\n        else if (isObject(two)) {\n            const keys = Object.keys(two);\n            for (let i = 0, j = keys.length; i < j; i++) {\n                const key = keys[i];\n                result[key] = takeValue(two[key]);\n            }\n        }\n    }\n    else if (isObject(one)) {\n        if (isObject(two)) {\n            if (!shouldMerge(one, two)) {\n                return two;\n            }\n            result = Object.assign({}, one);\n            const keys = Object.keys(two);\n            for (let i = 0, j = keys.length; i < j; i++) {\n                const key = keys[i];\n                const twoValue = two[key];\n                if (isPrimitive(twoValue)) {\n                    if (typeof twoValue === 'undefined') {\n                        delete result[key];\n                    }\n                    else {\n                        // result[key] = takeValue(twoValue);\n                        result[key] = twoValue;\n                    }\n                }\n                else {\n                    const obj1 = result[key];\n                    const obj2 = twoValue;\n                    if (wasObjectReferenced(one, key, objects) ||\n                        wasObjectReferenced(two, key, objects)) {\n                        delete result[key];\n                    }\n                    else {\n                        if (isObject(obj1) && isObject(obj2)) {\n                            const arr1 = objects.get(obj1) || [];\n                            const arr2 = objects.get(obj2) || [];\n                            arr1.push({ obj: one, key });\n                            arr2.push({ obj: two, key });\n                            objects.set(obj1, arr1);\n                            objects.set(obj2, arr2);\n                        }\n                        result[key] = mergeTwoObjects(result[key], twoValue, level, objects);\n                    }\n                }\n            }\n        }\n        else {\n            result = two;\n        }\n    }\n    return result;\n}\n/**\n * Function to check if object has been already reference\n * @param obj\n * @param key\n * @param objects\n */\nfunction wasObjectReferenced(obj, key, objects) {\n    const arr = objects.get(obj[key]) || [];\n    for (let i = 0, j = arr.length; i < j; i++) {\n        const info = arr[i];\n        if (info.key === key && info.obj === obj) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction isArray(value) {\n    return Array.isArray(value);\n}\nfunction isFunction(value) {\n    return typeof value === 'function';\n}\nfunction isObject(value) {\n    return (!isPrimitive(value) &&\n        !isArray(value) &&\n        !isFunction(value) &&\n        typeof value === 'object');\n}\nfunction isPrimitive(value) {\n    return (typeof value === 'string' ||\n        typeof value === 'number' ||\n        typeof value === 'boolean' ||\n        typeof value === 'undefined' ||\n        value instanceof Date ||\n        value instanceof RegExp ||\n        value === null);\n}\nfunction shouldMerge(one, two) {\n    if (!(0, lodash_merge_1.isPlainObject)(one) || !(0, lodash_merge_1.isPlainObject)(two)) {\n        return false;\n    }\n    return true;\n}\n//# sourceMappingURL=merge.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.callWithTimeout = exports.TimeoutError = void 0;\n/**\n * Error that is thrown on timeouts.\n */\nclass TimeoutError extends Error {\n    constructor(message) {\n        super(message);\n        // manually adjust prototype to retain `instanceof` functionality when targeting ES5, see:\n        // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n        Object.setPrototypeOf(this, TimeoutError.prototype);\n    }\n}\nexports.TimeoutError = TimeoutError;\n/**\n * Adds a timeout to a promise and rejects if the specified timeout has elapsed. Also rejects if the specified promise\n * rejects, and resolves if the specified promise resolves.\n *\n * <p> NOTE: this operation will continue even after it throws a {@link TimeoutError}.\n *\n * @param promise promise to use with timeout.\n * @param timeout the timeout in milliseconds until the returned promise is rejected.\n */\nfunction callWithTimeout(promise, timeout) {\n    let timeoutHandle;\n    const timeoutPromise = new Promise(function timeoutFunction(_resolve, reject) {\n        timeoutHandle = setTimeout(function timeoutHandler() {\n            reject(new TimeoutError('Operation timed out.'));\n        }, timeout);\n    });\n    return Promise.race([promise, timeoutPromise]).then(result => {\n        clearTimeout(timeoutHandle);\n        return result;\n    }, reason => {\n        clearTimeout(timeoutHandle);\n        throw reason;\n    });\n}\nexports.callWithTimeout = callWithTimeout;\n//# sourceMappingURL=timeout.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isUrlIgnored = exports.urlMatches = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction urlMatches(url, urlToMatch) {\n    if (typeof urlToMatch === 'string') {\n        return url === urlToMatch;\n    }\n    else {\n        return !!url.match(urlToMatch);\n    }\n}\nexports.urlMatches = urlMatches;\n/**\n * Check if {@param url} should be ignored when comparing against {@param ignoredUrls}\n * @param url\n * @param ignoredUrls\n */\nfunction isUrlIgnored(url, ignoredUrls) {\n    if (!ignoredUrls) {\n        return false;\n    }\n    for (const ignoreUrl of ignoredUrls) {\n        if (urlMatches(url, ignoreUrl)) {\n            return true;\n        }\n    }\n    return false;\n}\nexports.isUrlIgnored = isUrlIgnored;\n//# sourceMappingURL=url.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isWrapped = void 0;\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nfunction isWrapped(func) {\n    return (typeof func === 'function' &&\n        typeof func.__original === 'function' &&\n        typeof func.__unwrap === 'function' &&\n        func.__wrapped === true);\n}\nexports.isWrapped = isWrapped;\n//# sourceMappingURL=wrap.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Deferred = void 0;\nclass Deferred {\n    constructor() {\n        this._promise = new Promise((resolve, reject) => {\n            this._resolve = resolve;\n            this._reject = reject;\n        });\n    }\n    get promise() {\n        return this._promise;\n    }\n    resolve(val) {\n        this._resolve(val);\n    }\n    reject(err) {\n        this._reject(err);\n    }\n}\nexports.Deferred = Deferred;\n//# sourceMappingURL=promise.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindOnceFuture = void 0;\nconst promise_1 = require(\"./promise\");\n/**\n * Bind the callback and only invoke the callback once regardless how many times `BindOnceFuture.call` is invoked.\n */\nclass BindOnceFuture {\n    constructor(_callback, _that) {\n        this._callback = _callback;\n        this._that = _that;\n        this._isCalled = false;\n        this._deferred = new promise_1.Deferred();\n    }\n    get isCalled() {\n        return this._isCalled;\n    }\n    get promise() {\n        return this._deferred.promise;\n    }\n    call(...args) {\n        if (!this._isCalled) {\n            this._isCalled = true;\n            try {\n                Promise.resolve(this._callback.call(this._that, ...args)).then(val => this._deferred.resolve(val), err => this._deferred.reject(err));\n            }\n            catch (err) {\n                this._deferred.reject(err);\n            }\n        }\n        return this._deferred.promise;\n    }\n}\nexports.BindOnceFuture = BindOnceFuture;\n//# sourceMappingURL=callback.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._export = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst suppress_tracing_1 = require(\"../trace/suppress-tracing\");\n/**\n * @internal\n * Shared functionality used by Exporters while exporting data, including suppression of Traces.\n */\nfunction _export(exporter, arg) {\n    return new Promise(resolve => {\n        // prevent downstream exporter calls from generating spans\n        api_1.context.with((0, suppress_tracing_1.suppressTracing)(api_1.context.active()), () => {\n            exporter.export(arg, (result) => {\n                resolve(result);\n            });\n        });\n    });\n}\nexports._export = _export;\n//# sourceMappingURL=exporter.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT = exports.TraceState = exports.unsuppressTracing = exports.suppressTracing = exports.isTracingSuppressed = exports.TraceIdRatioBasedSampler = exports.ParentBasedSampler = exports.AlwaysOnSampler = exports.AlwaysOffSampler = exports.setRPCMetadata = exports.getRPCMetadata = exports.deleteRPCMetadata = exports.RPCType = exports.parseTraceParent = exports.W3CTraceContextPropagator = exports.TRACE_STATE_HEADER = exports.TRACE_PARENT_HEADER = exports.CompositePropagator = exports.unrefTimer = exports.otperformance = exports.hexToBase64 = exports.getEnvWithoutDefaults = exports.getEnv = exports._globalThis = exports.SDK_INFO = exports.RandomIdGenerator = exports.baggageUtils = exports.ExportResultCode = exports.hexToBinary = exports.timeInputToHrTime = exports.millisToHrTime = exports.isTimeInputHrTime = exports.isTimeInput = exports.hrTimeToTimeStamp = exports.hrTimeToNanoseconds = exports.hrTimeToMilliseconds = exports.hrTimeToMicroseconds = exports.hrTimeDuration = exports.hrTime = exports.getTimeOrigin = exports.addHrTimes = exports.loggingErrorHandler = exports.setGlobalErrorHandler = exports.globalErrorHandler = exports.sanitizeAttributes = exports.isAttributeValue = exports.isAttributeKey = exports.AnchoredClock = exports.W3CBaggagePropagator = void 0;\nexports.internal = exports.VERSION = exports.BindOnceFuture = exports.isWrapped = exports.urlMatches = exports.isUrlIgnored = exports.callWithTimeout = exports.TimeoutError = exports.TracesSamplerValues = exports.merge = exports.parseEnvironment = exports.DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT = exports.DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT = exports.DEFAULT_ENVIRONMENT = void 0;\nvar W3CBaggagePropagator_1 = require(\"./baggage/propagation/W3CBaggagePropagator\");\nObject.defineProperty(exports, \"W3CBaggagePropagator\", { enumerable: true, get: function () { return W3CBaggagePropagator_1.W3CBaggagePropagator; } });\nvar anchored_clock_1 = require(\"./common/anchored-clock\");\nObject.defineProperty(exports, \"AnchoredClock\", { enumerable: true, get: function () { return anchored_clock_1.AnchoredClock; } });\nvar attributes_1 = require(\"./common/attributes\");\nObject.defineProperty(exports, \"isAttributeKey\", { enumerable: true, get: function () { return attributes_1.isAttributeKey; } });\nObject.defineProperty(exports, \"isAttributeValue\", { enumerable: true, get: function () { return attributes_1.isAttributeValue; } });\nObject.defineProperty(exports, \"sanitizeAttributes\", { enumerable: true, get: function () { return attributes_1.sanitizeAttributes; } });\nvar global_error_handler_1 = require(\"./common/global-error-handler\");\nObject.defineProperty(exports, \"globalErrorHandler\", { enumerable: true, get: function () { return global_error_handler_1.globalErrorHandler; } });\nObject.defineProperty(exports, \"setGlobalErrorHandler\", { enumerable: true, get: function () { return global_error_handler_1.setGlobalErrorHandler; } });\nvar logging_error_handler_1 = require(\"./common/logging-error-handler\");\nObject.defineProperty(exports, \"loggingErrorHandler\", { enumerable: true, get: function () { return logging_error_handler_1.loggingErrorHandler; } });\nvar time_1 = require(\"./common/time\");\nObject.defineProperty(exports, \"addHrTimes\", { enumerable: true, get: function () { return time_1.addHrTimes; } });\nObject.defineProperty(exports, \"getTimeOrigin\", { enumerable: true, get: function () { return time_1.getTimeOrigin; } });\nObject.defineProperty(exports, \"hrTime\", { enumerable: true, get: function () { return time_1.hrTime; } });\nObject.defineProperty(exports, \"hrTimeDuration\", { enumerable: true, get: function () { return time_1.hrTimeDuration; } });\nObject.defineProperty(exports, \"hrTimeToMicroseconds\", { enumerable: true, get: function () { return time_1.hrTimeToMicroseconds; } });\nObject.defineProperty(exports, \"hrTimeToMilliseconds\", { enumerable: true, get: function () { return time_1.hrTimeToMilliseconds; } });\nObject.defineProperty(exports, \"hrTimeToNanoseconds\", { enumerable: true, get: function () { return time_1.hrTimeToNanoseconds; } });\nObject.defineProperty(exports, \"hrTimeToTimeStamp\", { enumerable: true, get: function () { return time_1.hrTimeToTimeStamp; } });\nObject.defineProperty(exports, \"isTimeInput\", { enumerable: true, get: function () { return time_1.isTimeInput; } });\nObject.defineProperty(exports, \"isTimeInputHrTime\", { enumerable: true, get: function () { return time_1.isTimeInputHrTime; } });\nObject.defineProperty(exports, \"millisToHrTime\", { enumerable: true, get: function () { return time_1.millisToHrTime; } });\nObject.defineProperty(exports, \"timeInputToHrTime\", { enumerable: true, get: function () { return time_1.timeInputToHrTime; } });\nvar hex_to_binary_1 = require(\"./common/hex-to-binary\");\nObject.defineProperty(exports, \"hexToBinary\", { enumerable: true, get: function () { return hex_to_binary_1.hexToBinary; } });\nvar ExportResult_1 = require(\"./ExportResult\");\nObject.defineProperty(exports, \"ExportResultCode\", { enumerable: true, get: function () { return ExportResult_1.ExportResultCode; } });\nconst utils_1 = require(\"./baggage/utils\");\nexports.baggageUtils = {\n    getKeyPairs: utils_1.getKeyPairs,\n    serializeKeyPairs: utils_1.serializeKeyPairs,\n    parseKeyPairsIntoRecord: utils_1.parseKeyPairsIntoRecord,\n    parsePairKeyValue: utils_1.parsePairKeyValue,\n};\nvar platform_1 = require(\"./platform\");\nObject.defineProperty(exports, \"RandomIdGenerator\", { enumerable: true, get: function () { return platform_1.RandomIdGenerator; } });\nObject.defineProperty(exports, \"SDK_INFO\", { enumerable: true, get: function () { return platform_1.SDK_INFO; } });\nObject.defineProperty(exports, \"_globalThis\", { enumerable: true, get: function () { return platform_1._globalThis; } });\nObject.defineProperty(exports, \"getEnv\", { enumerable: true, get: function () { return platform_1.getEnv; } });\nObject.defineProperty(exports, \"getEnvWithoutDefaults\", { enumerable: true, get: function () { return platform_1.getEnvWithoutDefaults; } });\nObject.defineProperty(exports, \"hexToBase64\", { enumerable: true, get: function () { return platform_1.hexToBase64; } });\nObject.defineProperty(exports, \"otperformance\", { enumerable: true, get: function () { return platform_1.otperformance; } });\nObject.defineProperty(exports, \"unrefTimer\", { enumerable: true, get: function () { return platform_1.unrefTimer; } });\nvar composite_1 = require(\"./propagation/composite\");\nObject.defineProperty(exports, \"CompositePropagator\", { enumerable: true, get: function () { return composite_1.CompositePropagator; } });\nvar W3CTraceContextPropagator_1 = require(\"./trace/W3CTraceContextPropagator\");\nObject.defineProperty(exports, \"TRACE_PARENT_HEADER\", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.TRACE_PARENT_HEADER; } });\nObject.defineProperty(exports, \"TRACE_STATE_HEADER\", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.TRACE_STATE_HEADER; } });\nObject.defineProperty(exports, \"W3CTraceContextPropagator\", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.W3CTraceContextPropagator; } });\nObject.defineProperty(exports, \"parseTraceParent\", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.parseTraceParent; } });\nvar rpc_metadata_1 = require(\"./trace/rpc-metadata\");\nObject.defineProperty(exports, \"RPCType\", { enumerable: true, get: function () { return rpc_metadata_1.RPCType; } });\nObject.defineProperty(exports, \"deleteRPCMetadata\", { enumerable: true, get: function () { return rpc_metadata_1.deleteRPCMetadata; } });\nObject.defineProperty(exports, \"getRPCMetadata\", { enumerable: true, get: function () { return rpc_metadata_1.getRPCMetadata; } });\nObject.defineProperty(exports, \"setRPCMetadata\", { enumerable: true, get: function () { return rpc_metadata_1.setRPCMetadata; } });\nvar AlwaysOffSampler_1 = require(\"./trace/sampler/AlwaysOffSampler\");\nObject.defineProperty(exports, \"AlwaysOffSampler\", { enumerable: true, get: function () { return AlwaysOffSampler_1.AlwaysOffSampler; } });\nvar AlwaysOnSampler_1 = require(\"./trace/sampler/AlwaysOnSampler\");\nObject.defineProperty(exports, \"AlwaysOnSampler\", { enumerable: true, get: function () { return AlwaysOnSampler_1.AlwaysOnSampler; } });\nvar ParentBasedSampler_1 = require(\"./trace/sampler/ParentBasedSampler\");\nObject.defineProperty(exports, \"ParentBasedSampler\", { enumerable: true, get: function () { return ParentBasedSampler_1.ParentBasedSampler; } });\nvar TraceIdRatioBasedSampler_1 = require(\"./trace/sampler/TraceIdRatioBasedSampler\");\nObject.defineProperty(exports, \"TraceIdRatioBasedSampler\", { enumerable: true, get: function () { return TraceIdRatioBasedSampler_1.TraceIdRatioBasedSampler; } });\nvar suppress_tracing_1 = require(\"./trace/suppress-tracing\");\nObject.defineProperty(exports, \"isTracingSuppressed\", { enumerable: true, get: function () { return suppress_tracing_1.isTracingSuppressed; } });\nObject.defineProperty(exports, \"suppressTracing\", { enumerable: true, get: function () { return suppress_tracing_1.suppressTracing; } });\nObject.defineProperty(exports, \"unsuppressTracing\", { enumerable: true, get: function () { return suppress_tracing_1.unsuppressTracing; } });\nvar TraceState_1 = require(\"./trace/TraceState\");\nObject.defineProperty(exports, \"TraceState\", { enumerable: true, get: function () { return TraceState_1.TraceState; } });\nvar environment_1 = require(\"./utils/environment\");\nObject.defineProperty(exports, \"DEFAULT_ATTRIBUTE_COUNT_LIMIT\", { enumerable: true, get: function () { return environment_1.DEFAULT_ATTRIBUTE_COUNT_LIMIT; } });\nObject.defineProperty(exports, \"DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT\", { enumerable: true, get: function () { return environment_1.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT; } });\nObject.defineProperty(exports, \"DEFAULT_ENVIRONMENT\", { enumerable: true, get: function () { return environment_1.DEFAULT_ENVIRONMENT; } });\nObject.defineProperty(exports, \"DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT\", { enumerable: true, get: function () { return environment_1.DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT; } });\nObject.defineProperty(exports, \"DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT\", { enumerable: true, get: function () { return environment_1.DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT; } });\nObject.defineProperty(exports, \"parseEnvironment\", { enumerable: true, get: function () { return environment_1.parseEnvironment; } });\nvar merge_1 = require(\"./utils/merge\");\nObject.defineProperty(exports, \"merge\", { enumerable: true, get: function () { return merge_1.merge; } });\nvar sampling_1 = require(\"./utils/sampling\");\nObject.defineProperty(exports, \"TracesSamplerValues\", { enumerable: true, get: function () { return sampling_1.TracesSamplerValues; } });\nvar timeout_1 = require(\"./utils/timeout\");\nObject.defineProperty(exports, \"TimeoutError\", { enumerable: true, get: function () { return timeout_1.TimeoutError; } });\nObject.defineProperty(exports, \"callWithTimeout\", { enumerable: true, get: function () { return timeout_1.callWithTimeout; } });\nvar url_1 = require(\"./utils/url\");\nObject.defineProperty(exports, \"isUrlIgnored\", { enumerable: true, get: function () { return url_1.isUrlIgnored; } });\nObject.defineProperty(exports, \"urlMatches\", { enumerable: true, get: function () { return url_1.urlMatches; } });\nvar wrap_1 = require(\"./utils/wrap\");\nObject.defineProperty(exports, \"isWrapped\", { enumerable: true, get: function () { return wrap_1.isWrapped; } });\nvar callback_1 = require(\"./utils/callback\");\nObject.defineProperty(exports, \"BindOnceFuture\", { enumerable: true, get: function () { return callback_1.BindOnceFuture; } });\nvar version_1 = require(\"./version\");\nObject.defineProperty(exports, \"VERSION\", { enumerable: true, get: function () { return version_1.VERSION; } });\nconst exporter_1 = require(\"./internal/exporter\");\nexports.internal = {\n    _export: exporter_1._export,\n};\n//# sourceMappingURL=index.js.map","import { ReadableSpan } from \"@opentelemetry/sdk-trace-base\";\nimport { SpanKind as OtSpanKind } from \"@opentelemetry/api\";\nimport { JsonSchemaHelper, JsonSchemaType, JsonSchema } from \"./JsonSchemaHelper\";\nimport { CleanSpanData, MetadataObject, TdSpanAttributes } from \"../types\";\nimport { PackageType, StatusCode } from \"@use-tusk/drift-schemas/core/span\";\nimport { logger, OriginalGlobalUtils } from \"../utils\";\n\n/**\n * Utility class for transforming OpenTelemetry spans to CleanSpanData\n */\nexport class SpanTransformer {\n  /**\n   * Transform OpenTelemetry span to clean JSON format with compile-time type safety\n   * Return type is derived from protobuf schema but uses clean JSON.\n   * We use JSON because serialized protobuf is extremely verbose and not readable.\n   */\n  static transformSpanToCleanJSON(span: ReadableSpan): CleanSpanData {\n    const isRootSpan = !span.parentSpanId || span.kind === OtSpanKind.SERVER;\n\n    // Extract data from span attributes\n    const attributes = span.attributes;\n    const packageName = SpanTransformer.extractPackageName(attributes);\n    const instrumentationName = SpanTransformer.extractInstrumentationName(span, attributes);\n    const submoduleName = SpanTransformer.extractSubmoduleName(attributes);\n\n    // Process input data\n    const inputValueString = attributes[TdSpanAttributes.INPUT_VALUE] as string;\n    const inputData = JSON.parse(inputValueString);\n\n    // Extract input schema merges if they exist\n    const inputSchemaMergesString = attributes[TdSpanAttributes.INPUT_SCHEMA_MERGES] as string;\n    const inputSchemaMerges = inputSchemaMergesString\n      ? JSON.parse(inputSchemaMergesString)\n      : undefined;\n\n    const {\n      schema: inputSchema,\n      decodedValueHash: inputValueHash,\n      decodedSchemaHash: inputSchemaHash,\n    } = JsonSchemaHelper.generateSchemaAndHash(inputData, inputSchemaMerges);\n\n    // Process output data\n    let outputData: unknown = {};\n    let outputSchema: JsonSchema = { type: JsonSchemaType.OBJECT, properties: {} };\n    let outputValueHash: string = \"\";\n    let outputSchemaHash: string = \"\";\n\n    if (attributes[TdSpanAttributes.OUTPUT_VALUE]) {\n      const outputValueString = attributes[TdSpanAttributes.OUTPUT_VALUE] as string;\n      outputData = JSON.parse(outputValueString);\n\n      // Extract output schema merges if they exist\n      const outputSchemaMergesString = attributes[TdSpanAttributes.OUTPUT_SCHEMA_MERGES] as string;\n      const outputSchemaMerges = outputSchemaMergesString\n        ? JSON.parse(outputSchemaMergesString)\n        : undefined;\n\n      ({\n        schema: outputSchema,\n        decodedValueHash: outputValueHash,\n        decodedSchemaHash: outputSchemaHash,\n      } = JsonSchemaHelper.generateSchemaAndHash(outputData, outputSchemaMerges));\n    } else {\n      ({\n        schema: outputSchema,\n        decodedValueHash: outputValueHash,\n        decodedSchemaHash: outputSchemaHash,\n      } = JsonSchemaHelper.generateSchemaAndHash(outputData));\n    }\n\n    let metadata: MetadataObject | undefined = undefined;\n    if (attributes[TdSpanAttributes.METADATA]) {\n      metadata = JSON.parse(attributes[TdSpanAttributes.METADATA] as string);\n    }\n\n    let transformMetadata;\n    const transformMetadataString = attributes[TdSpanAttributes.TRANSFORM_METADATA] as\n      | string\n      | undefined;\n    if (transformMetadataString) {\n      try {\n        transformMetadata = JSON.parse(transformMetadataString);\n      } catch (error) {\n        logger.warn(\"[SpanTransformer] Failed to parse transform metadata\", error);\n      }\n    }\n\n    const originalDate = OriginalGlobalUtils.getOriginalDate();\n\n    return {\n      traceId: span.spanContext().traceId,\n      spanId: span.spanContext().spanId,\n      parentSpanId: span.parentSpanId || \"\",\n\n      name: attributes[TdSpanAttributes.NAME] as string,\n\n      packageName,\n      instrumentationName,\n      submoduleName: submoduleName || \"\",\n\n      packageType: (attributes[TdSpanAttributes.PACKAGE_TYPE] as PackageType) || undefined,\n\n      inputValue: inputData,\n      outputValue: outputData,\n      inputSchema,\n      outputSchema,\n\n      inputSchemaHash,\n      outputSchemaHash,\n      inputValueHash,\n      outputValueHash,\n\n      kind: span.kind,\n\n      status: {\n        code: span.status.code === 1 ? StatusCode.OK : StatusCode.ERROR,\n        message: span.status.message || \"\",\n      },\n\n      isPreAppStart: attributes[TdSpanAttributes.IS_PRE_APP_START] === true,\n\n      timestamp: {\n        seconds: Math.floor(originalDate.getTime() / 1000),\n        nanos: (originalDate.getTime() % 1000) * 1000000,\n      },\n      duration: {\n        seconds: span.duration[0],\n        nanos: span.duration[1],\n      },\n      isRootSpan,\n      metadata,\n      transformMetadata,\n    } satisfies CleanSpanData;\n  }\n\n  /**\n   * Extract package name from attributes or instrumentation library\n   */\n  private static extractPackageName(attributes: Record<string, unknown>): string {\n    // Check for explicit package name in attributes\n    if (attributes[TdSpanAttributes.PACKAGE_NAME]) {\n      return attributes[TdSpanAttributes.PACKAGE_NAME] as string;\n    }\n\n    return \"unknown\";\n  }\n\n  /**\n   * Extract instrumentation name from span data\n   */\n  private static extractInstrumentationName(\n    span: ReadableSpan,\n    attributes: Record<string, unknown>,\n  ): string {\n    // Check for explicit instrumentation name in attributes\n    if (attributes[TdSpanAttributes.INSTRUMENTATION_NAME]) {\n      return attributes[TdSpanAttributes.INSTRUMENTATION_NAME] as string;\n    }\n\n    // Generate from library name or type\n    if (span.instrumentationLibrary?.name) {\n      return `tusk-instrumentation-${span.instrumentationLibrary.name}`;\n    }\n\n    // Generate from detected package\n    const packageName = SpanTransformer.extractPackageName(attributes);\n    return `tusk-instrumentation-${packageName}`;\n  }\n\n  /**\n   * Extract submodule name from attributes\n   */\n  private static extractSubmoduleName(attributes: Record<string, unknown>): string | undefined {\n    // Check for explicit submodule in attributes\n    if (attributes[TdSpanAttributes.SUBMODULE_NAME]) {\n      return attributes[TdSpanAttributes.SUBMODULE_NAME] as string;\n    }\n\n    return undefined;\n  }\n}\n","import * as fs from \"fs\";\nimport * as path from \"path\";\nimport { ExportResult, ExportResultCode } from \"@opentelemetry/core\";\nimport type { SpanExportAdapter } from \"../TdSpanExporter\";\nimport { CleanSpanData } from \"../../types\";\nimport { logger } from \"../../utils/logger\";\n\nexport interface FilesystemSpanAdapterConfig {\n  baseDirectory: string;\n}\n\n/**\n * Exports spans to local JSONL files organized by trace ID\n */\nexport class FilesystemSpanAdapter implements SpanExportAdapter {\n  readonly name = \"filesystem\";\n  private baseDirectory: string;\n  private traceFileMap: Map<string, string> = new Map();\n\n  constructor(config: FilesystemSpanAdapterConfig) {\n    this.baseDirectory = config.baseDirectory;\n\n    // Initialize file system\n    if (!fs.existsSync(this.baseDirectory)) {\n      fs.mkdirSync(this.baseDirectory, { recursive: true });\n    }\n  }\n\n  async exportSpans(spans: CleanSpanData[]): Promise<ExportResult> {\n    try {\n      for (const span of spans) {\n        const traceId = span.traceId;\n\n        // Get or create file path for this trace ID\n        let filePath = this.traceFileMap.get(traceId);\n\n        if (!filePath) {\n          const isoTimestamp = new Date().toISOString().replace(/[:.]/g, \"-\");\n          filePath = path.join(this.baseDirectory, `${isoTimestamp}_trace_${traceId}.jsonl`);\n          this.traceFileMap.set(traceId, filePath);\n        }\n\n        const jsonLine = JSON.stringify(span) + \"\\n\";\n        fs.appendFileSync(filePath, jsonLine, \"utf8\");\n      }\n\n      logger.debug(\n        `Exported ${spans.length} span(s) to trace-specific files in ${this.baseDirectory}`,\n      );\n\n      return { code: ExportResultCode.SUCCESS };\n    } catch (error) {\n      logger.error(`Failed to export spans to local files:`, error);\n      return {\n        code: ExportResultCode.FAILED,\n        error: error instanceof Error ? error : new Error(\"Filesystem export failed\"),\n      };\n    }\n  }\n\n  async shutdown(): Promise<void> {\n    // No cleanup needed for filesystem exporter\n    return Promise.resolve();\n  }\n}\n","import \"../struct-LJz5_MGH.js\";\nimport \"../duration-B3fwb4jB.js\";\nimport \"../timestamp-CN7C70ih.js\";\nimport \"../json_schema-DhnvfM2m.js\";\nimport \"../span-BZ89ct3l.js\";\nimport { SpanExportService } from \"../span_export_service-XwF6hpEK.js\";\nimport { stackIntercept } from \"@protobuf-ts/runtime-rpc\";\n\n//#region generated/ts/backend/span_export_service.client.ts\n/**\n* @generated from protobuf service tusk.drift.backend.v1.SpanExportService\n*/\nvar SpanExportServiceClient = class {\n\tconstructor(_transport) {\n\t\tthis._transport = _transport;\n\t\tthis.typeName = SpanExportService.typeName;\n\t\tthis.methods = SpanExportService.methods;\n\t\tthis.options = SpanExportService.options;\n\t}\n\t/**\n\t* @generated from protobuf rpc: ExportSpans\n\t*/\n\texportSpans(input, options) {\n\t\tconst method = this.methods[0], opt = this._transport.mergeOptions(options);\n\t\treturn stackIntercept(\"unary\", this._transport, method, opt, input);\n\t}\n};\n\n//#endregion\nexport { SpanExportServiceClient };\n//# sourceMappingURL=span_export_service.client.js.map","\"use strict\";\n// Copyright 2018 Twitch Interactive, Inc.  All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"). You may not\n// use this file except in compliance with the License. A copy of the License is\n// located at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n// CONDITIONS OF ANY KIND, either express or implied. See the License\n// for the specific language governing permissions and limitations under\n// the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TwirpErrorCode = void 0;\n/**\n * See https://twitchtv.github.io/twirp/docs/spec_v5.html#error-codes\n *\n * Names and descriptions from [twirp / errors.go](https://github.com/twitchtv/twirp/blob/b2ecb97cf02a9bb55d730920f6a1cb5243899093/errors.go)\n *\n * Copyright 2018 by Twitch Interactive, Inc.\n */\nvar TwirpErrorCode;\n(function (TwirpErrorCode) {\n    /**\n     * The operation was cancelled.\n     */\n    TwirpErrorCode[TwirpErrorCode[\"cancelled\"] = 0] = \"cancelled\";\n    /**\n     * An unknown error occurred. For example, this can be used when handling\n     * errors raised by APIs that do not return any error information.\n     */\n    TwirpErrorCode[TwirpErrorCode[\"unknown\"] = 1] = \"unknown\";\n    /**\n     * The client specified an invalid argument. This indicates arguments that\n     * are invalid regardless of the state of the system (i.e. a malformed\n     * file name, required argument, number out of range, etc.).\n     */\n    TwirpErrorCode[TwirpErrorCode[\"invalid_argument\"] = 2] = \"invalid_argument\";\n    /**\n     * The client sent a message which could not be decoded. This may mean that\n     * the message was encoded improperly or that the client and server have\n     * incompatible message definitions.\n     */\n    TwirpErrorCode[TwirpErrorCode[\"malformed\"] = 3] = \"malformed\";\n    /**\n     * Operation expired before completion. For operations that change the state\n     * of the system, this error may be returned even if the operation has\n     * completed successfully (timeout).\n     */\n    TwirpErrorCode[TwirpErrorCode[\"deadline_exceeded\"] = 4] = \"deadline_exceeded\";\n    /**\n     * Some requested entity was not found.\n     */\n    TwirpErrorCode[TwirpErrorCode[\"not_found\"] = 5] = \"not_found\";\n    /**\n     * The requested URL path wasn't routable to a Twirp service and method.\n     * This is returned by generated server code and should not be returned\n     * by application code (use \"not_found\" or \"unimplemented\" instead).\n     */\n    TwirpErrorCode[TwirpErrorCode[\"bad_route\"] = 6] = \"bad_route\";\n    /**\n     * An attempt to create an entity failed because one already exists.\n     */\n    TwirpErrorCode[TwirpErrorCode[\"already_exists\"] = 7] = \"already_exists\";\n    /**\n     * The caller does not have permission to execute the specified operation.\n     * It must not be used if the caller cannot be identified (use\n     * \"unauthenticated\" instead).\n     */\n    TwirpErrorCode[TwirpErrorCode[\"permission_denied\"] = 8] = \"permission_denied\";\n    /**\n     * The request does not have valid authentication credentials for the\n     * operation.\n     */\n    TwirpErrorCode[TwirpErrorCode[\"unauthenticated\"] = 9] = \"unauthenticated\";\n    /**\n     * Some resource has been exhausted, perhaps a per-user quota, or\n     * perhaps the entire file system is out of space.\n     */\n    TwirpErrorCode[TwirpErrorCode[\"resource_exhausted\"] = 10] = \"resource_exhausted\";\n    /**\n     * The operation was rejected because the system is not in a state\n     * required for the operation's execution. For example, doing an rmdir\n     * operation on a directory that is non-empty, or on a non-directory\n     * object, or when having conflicting read-modify-write on the same\n     * resource.\n     */\n    TwirpErrorCode[TwirpErrorCode[\"failed_precondition\"] = 11] = \"failed_precondition\";\n    /**\n     * The operation was aborted, typically due to a concurrency issue\n     * like sequencer check failures, transaction aborts, etc.\n     */\n    TwirpErrorCode[TwirpErrorCode[\"aborted\"] = 12] = \"aborted\";\n    /**\n     * The operation was attempted past the valid range. For example, seeking\n     * or reading past end of a paginated collection. Unlike\n     * \"invalid_argument\", this error indicates a problem that may be fixed if\n     * the system state changes (i.e. adding more items to the collection).\n     * There is a fair bit of overlap between \"failed_precondition\" and\n     * \"out_of_range\". We recommend using \"out_of_range\" (the more specific\n     * error) when it applies so that callers who are iterating through a space\n     * can easily look for an \"out_of_range\" error to detect when they are done.\n     */\n    TwirpErrorCode[TwirpErrorCode[\"out_of_range\"] = 13] = \"out_of_range\";\n    /**\n     * The operation is not implemented or not supported/enabled in this service.\n     */\n    TwirpErrorCode[TwirpErrorCode[\"unimplemented\"] = 14] = \"unimplemented\";\n    /**\n     * When some invariants expected by the underlying system have been broken.\n     * In other words, something bad happened in the library or backend service.\n     * Twirp specific issues like wire and serialization problems are also\n     * reported as \"internal\" errors.\n     */\n    TwirpErrorCode[TwirpErrorCode[\"internal\"] = 15] = \"internal\";\n    /**\n     * The service is currently unavailable. This is most likely a transient\n     * condition and may be corrected by retrying with a backoff.\n     */\n    TwirpErrorCode[TwirpErrorCode[\"unavailable\"] = 16] = \"unavailable\";\n    /**\n     * The operation resulted in unrecoverable data loss or corruption.\n     */\n    TwirpErrorCode[TwirpErrorCode[\"dataloss\"] = 17] = \"dataloss\";\n})(TwirpErrorCode = exports.TwirpErrorCode || (exports.TwirpErrorCode = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseMetadataFromResponseHeaders = exports.parseTwirpErrorResponse = exports.createTwirpRequestHeader = void 0;\nconst runtime_1 = require(\"@protobuf-ts/runtime\");\nconst runtime_rpc_1 = require(\"@protobuf-ts/runtime-rpc\");\nconst twitch_twirp_error_code_1 = require(\"./twitch-twirp-error-code\");\n/**\n * Create fetch API headers for a Twirp request.\n */\nfunction createTwirpRequestHeader(headers, sendJson, meta) {\n    // add meta as headers\n    if (meta) {\n        for (let [k, v] of Object.entries(meta)) {\n            if (typeof v == \"string\")\n                headers.append(k, v);\n            else\n                for (let i of v)\n                    headers.append(k, i);\n        }\n    }\n    // set standard headers (possibly overwriting meta)\n    headers.set('Content-Type', sendJson ? \"application/json\" : \"application/protobuf\");\n    headers.set('Accept', sendJson ? \"application/json\" : \"application/protobuf, application/json\");\n    return headers;\n}\nexports.createTwirpRequestHeader = createTwirpRequestHeader;\n/**\n * Parse Twirp error message from JSON and create RpcError from the Twirp error.\n *\n * see https://twitchtv.github.io/twirp/docs/spec_v5.html\n */\nfunction parseTwirpErrorResponse(json) {\n    if (!runtime_1.isJsonObject(json) || typeof json.code !== \"string\" || typeof json.msg !== \"string\")\n        return new runtime_rpc_1.RpcError('cannot read twirp error response', twitch_twirp_error_code_1.TwirpErrorCode[twitch_twirp_error_code_1.TwirpErrorCode.internal]);\n    let meta = {};\n    if (runtime_1.isJsonObject(json.meta)) {\n        for (let [k, v] of Object.entries(json.meta)) {\n            if (typeof v == \"string\")\n                meta[k] = v;\n        }\n    }\n    return new runtime_rpc_1.RpcError(json.msg, json.code, meta);\n}\nexports.parseTwirpErrorResponse = parseTwirpErrorResponse;\n/**\n * Parses fetch API response headers to RpcMetaData.\n * Drops the headers Content-Type and Content-Length.\n */\nfunction parseMetadataFromResponseHeaders(headers) {\n    let meta = {};\n    headers.forEach((value, key) => {\n        if (key.toLowerCase() === 'content-type')\n            return;\n        if (key.toLowerCase() === 'content-length')\n            return;\n        if (meta.hasOwnProperty(key))\n            meta[key].push(value);\n        else\n            meta[key] = value;\n    });\n    return meta;\n}\nexports.parseMetadataFromResponseHeaders = parseMetadataFromResponseHeaders;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TwirpFetchTransport = void 0;\nconst twirp_format_1 = require(\"./twirp-format\");\nconst runtime_rpc_1 = require(\"@protobuf-ts/runtime-rpc\");\nconst runtime_1 = require(\"@protobuf-ts/runtime\");\nconst twitch_twirp_error_code_1 = require(\"./twitch-twirp-error-code\");\n/**\n * Implements the Twirp protocol, supporting JSON or binary format on\n * the wire. Uses the fetch API to do the HTTP requests.\n *\n * See https://twitchtv.github.io/twirp/docs/spec_v5.html\n */\nclass TwirpFetchTransport {\n    constructor(options) {\n        this.defaultOptions = options;\n    }\n    mergeOptions(options) {\n        return runtime_rpc_1.mergeRpcOptions(this.defaultOptions, options);\n    }\n    unary(method, input, options) {\n        var _a, _b, _c;\n        let opt = options, url = this.makeUrl(method, opt), fetchInit = (_a = opt.fetchInit) !== null && _a !== void 0 ? _a : {}, requestBody = opt.sendJson ? method.I.toJsonString(input, opt.jsonOptions) : method.I.toBinary(input, opt.binaryOptions), defHeader = new runtime_rpc_1.Deferred(), defMessage = new runtime_rpc_1.Deferred(), defStatus = new runtime_rpc_1.Deferred(), defTrailer = new runtime_rpc_1.Deferred();\n        globalThis.fetch(url, Object.assign(Object.assign({}, fetchInit), { method: 'POST', headers: twirp_format_1.createTwirpRequestHeader(new globalThis.Headers(), !!opt.sendJson, opt.meta), body: requestBody, signal: (_b = options.abort) !== null && _b !== void 0 ? _b : null // node-fetch@3.0.0-beta.9 rejects `undefined`\n         }))\n            .then(fetchResponse => {\n            defHeader.resolve(twirp_format_1.parseMetadataFromResponseHeaders(fetchResponse.headers));\n            // Cloudflare Workers throw when the type property of a fetch response\n            // is accessed, so wrap access with try/catch. See:\n            // * https://developers.cloudflare.com/workers/runtime-apis/response/#properties\n            // * https://github.com/cloudflare/miniflare/blob/72f046e/packages/core/src/standards/http.ts#L646\n            let responseType;\n            try {\n                responseType = fetchResponse.type;\n            }\n            catch (_a) { }\n            switch (responseType) {\n                case \"error\":\n                case \"opaque\":\n                case \"opaqueredirect\":\n                    // see https://developer.mozilla.org/en-US/docs/Web/API/Response/type\n                    throw new runtime_rpc_1.RpcError(`fetch response type ${fetchResponse.type}`, twitch_twirp_error_code_1.TwirpErrorCode[twitch_twirp_error_code_1.TwirpErrorCode.unknown]);\n            }\n            if (!fetchResponse.ok) {\n                return fetchResponse.json().then(value => {\n                    throw twirp_format_1.parseTwirpErrorResponse(value);\n                }, () => {\n                    throw new runtime_rpc_1.RpcError('received HTTP ' + fetchResponse.status + ', unable to read response body as json', twitch_twirp_error_code_1.TwirpErrorCode[twitch_twirp_error_code_1.TwirpErrorCode.internal]);\n                });\n            }\n            if (opt.sendJson) {\n                return fetchResponse.json().then(value => method.O.fromJson(value, opt.jsonOptions), () => {\n                    throw new runtime_rpc_1.RpcError('unable to read response body as json', twitch_twirp_error_code_1.TwirpErrorCode[twitch_twirp_error_code_1.TwirpErrorCode.dataloss]);\n                });\n            }\n            return fetchResponse.arrayBuffer().then(value => method.O.fromBinary(new Uint8Array(value), opt.binaryOptions), () => {\n                throw new runtime_rpc_1.RpcError('unable to read response body', twitch_twirp_error_code_1.TwirpErrorCode[twitch_twirp_error_code_1.TwirpErrorCode.dataloss]);\n            });\n        }, (reason) => {\n            // failed to fetch, aborted, wrong url or network problem\n            if (reason instanceof Error && reason.name === 'AbortError')\n                throw new runtime_rpc_1.RpcError(reason.message, twitch_twirp_error_code_1.TwirpErrorCode[twitch_twirp_error_code_1.TwirpErrorCode.cancelled]);\n            throw new runtime_rpc_1.RpcError(reason instanceof Error ? reason.message : reason);\n        })\n            .then(message => {\n            defMessage.resolve(message);\n            defStatus.resolve({ code: 'OK', detail: '' });\n            defTrailer.resolve({});\n        })\n            .catch((reason) => {\n            // RpcErrors are thrown by us, everything else is an internal error\n            let error = reason instanceof runtime_rpc_1.RpcError ? reason\n                : new runtime_rpc_1.RpcError(reason instanceof Error ? reason.message : reason, twitch_twirp_error_code_1.TwirpErrorCode[twitch_twirp_error_code_1.TwirpErrorCode.internal]);\n            error.methodName = method.name;\n            error.serviceName = method.service.typeName;\n            defHeader.rejectPending(error);\n            defMessage.rejectPending(error);\n            defStatus.rejectPending(error);\n            defTrailer.rejectPending(error);\n        });\n        return new runtime_rpc_1.UnaryCall(method, (_c = opt.meta) !== null && _c !== void 0 ? _c : {}, input, defHeader.promise, defMessage.promise, defStatus.promise, defTrailer.promise);\n    }\n    /**\n     * Create an URI for a RPC call.\n     *\n     * Takes the `baseUrl` option and appends:\n     * - slash \"/\"\n     * - package name\n     * - dot \".\"\n     * - service name\n     * - slash \"/\"\n     * - method name\n     *\n     * If the service was declared without a package, the package name and dot\n     * are omitted.\n     *\n     * The method name is CamelCased just as it would be in Go, unless the\n     * option `useProtoMethodName` is `true`.\n     */\n    makeUrl(method, options) {\n        let base = options.baseUrl;\n        if (base.endsWith('/'))\n            base = base.substring(0, base.length - 1);\n        let methodName = method.name;\n        if (options.useProtoMethodName !== true) {\n            methodName = runtime_1.lowerCamelCase(methodName);\n            methodName = methodName.substring(0, 1).toUpperCase() + methodName.substring(1);\n        }\n        return `${base}/${method.service.typeName}/${methodName}`;\n    }\n    clientStreaming(method /*, options: RpcOptions*/) {\n        const e = new runtime_rpc_1.RpcError('Client streaming is not supported by Twirp', twitch_twirp_error_code_1.TwirpErrorCode[twitch_twirp_error_code_1.TwirpErrorCode.unimplemented]);\n        e.methodName = method.name;\n        e.serviceName = method.service.typeName;\n        throw e;\n    }\n    duplex(method /*, options: RpcOptions*/) {\n        const e = new runtime_rpc_1.RpcError('Duplex streaming is not supported by Twirp', twitch_twirp_error_code_1.TwirpErrorCode[twitch_twirp_error_code_1.TwirpErrorCode.unimplemented]);\n        e.methodName = method.name;\n        e.serviceName = method.service.typeName;\n        throw e;\n    }\n    serverStreaming(method /*, input: I, options?: RpcOptions*/) {\n        const e = new runtime_rpc_1.RpcError('Server streaming is not supported by Twirp', twitch_twirp_error_code_1.TwirpErrorCode[twitch_twirp_error_code_1.TwirpErrorCode.unimplemented]);\n        e.methodName = method.name;\n        e.serviceName = method.service.typeName;\n        throw e;\n    }\n}\nexports.TwirpFetchTransport = TwirpFetchTransport;\n","\"use strict\";\n// Public API of the Twirp transport.\n// Note: we do not use `export * from ...` to help tree shakers,\n// webpack verbose output hints that this should be useful\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar twirp_transport_1 = require(\"./twirp-transport\");\nObject.defineProperty(exports, \"TwirpFetchTransport\", { enumerable: true, get: function () { return twirp_transport_1.TwirpFetchTransport; } });\nvar twirp_format_1 = require(\"./twirp-format\");\nObject.defineProperty(exports, \"createTwirpRequestHeader\", { enumerable: true, get: function () { return twirp_format_1.createTwirpRequestHeader; } });\nObject.defineProperty(exports, \"parseTwirpErrorResponse\", { enumerable: true, get: function () { return twirp_format_1.parseTwirpErrorResponse; } });\nObject.defineProperty(exports, \"parseMetadataFromResponseHeaders\", { enumerable: true, get: function () { return twirp_format_1.parseMetadataFromResponseHeaders; } });\nvar twitch_twirp_error_code_1 = require(\"./twitch-twirp-error-code\");\nObject.defineProperty(exports, \"TwirpErrorCode\", { enumerable: true, get: function () { return twitch_twirp_error_code_1.TwirpErrorCode; } });\n","import { ExportResult, ExportResultCode } from \"@opentelemetry/core\";\nimport type { SpanExportAdapter } from \"../TdSpanExporter\";\nimport { CleanSpanData } from \"../../types\";\nimport { SpanExportServiceClient } from \"@use-tusk/drift-schemas/backend/span_export_service.client\";\nimport { ExportSpansRequest } from \"@use-tusk/drift-schemas/backend/span_export_service\";\nimport { TwirpFetchTransport } from \"@protobuf-ts/twirp-transport\";\nimport { Span, PackageType, SpanKind as DriftSpanKind } from \"@use-tusk/drift-schemas/core/span\";\nimport { SpanKind as OtelSpanKind } from \"@opentelemetry/api\";\nimport { toStruct } from \"../../utils/protobufUtils\";\nimport { logger } from \"../../utils/logger\";\n\nexport interface ApiSpanAdapterConfig {\n  apiKey: string;\n  tuskBackendBaseUrl: string;\n  observableServiceId: string;\n  environment: string;\n  sdkVersion: string;\n  sdkInstanceId: string;\n}\n\nconst DRIFT_API_PATH = \"/api/drift\";\n\n/**\n * Exports spans to Tusk backend API via protobuf\n */\nexport class ApiSpanAdapter implements SpanExportAdapter {\n  readonly name = \"api\";\n  private spanExportClient: SpanExportServiceClient;\n  private observableServiceId: string;\n  private environment: string;\n  private sdkVersion: string;\n  private sdkInstanceId: string;\n\n  constructor(config: ApiSpanAdapterConfig) {\n    this.observableServiceId = config.observableServiceId;\n    this.environment = config.environment;\n    this.sdkVersion = config.sdkVersion;\n    this.sdkInstanceId = config.sdkInstanceId;\n\n    const transport = new TwirpFetchTransport({\n      baseUrl: `${config.tuskBackendBaseUrl}${DRIFT_API_PATH}`,\n      meta: {\n        \"x-api-key\": config.apiKey,\n        \"x-td-skip-instrumentation\": \"true\",\n      },\n    });\n    this.spanExportClient = new SpanExportServiceClient(transport);\n\n    logger.debug(\"ApiSpanAdapter initialized\");\n  }\n\n  async exportSpans(spans: CleanSpanData[]): Promise<ExportResult> {\n    try {\n      // Transform spans to protobuf format\n      const protoSpans: Span[] = spans.map((span) => this.transformSpanToProtobuf(span));\n\n      const request: ExportSpansRequest = {\n        observableServiceId: this.observableServiceId,\n        environment: this.environment,\n        sdkVersion: this.sdkVersion,\n        sdkInstanceId: this.sdkInstanceId,\n        spans: protoSpans,\n      };\n\n      const response = await this.spanExportClient.exportSpans(request);\n\n      if (!response.response.success) {\n        throw new Error(`Remote export failed: ${response.response.message}`);\n      }\n\n      logger.debug(`Successfully exported ${spans.length} spans to remote endpoint`);\n      return { code: ExportResultCode.SUCCESS };\n    } catch (error) {\n      logger.error(`Failed to export spans to remote:`, error);\n      return {\n        code: ExportResultCode.FAILED,\n        error: error instanceof Error ? error : new Error(\"API export failed\"),\n      };\n    }\n  }\n\n  private transformSpanToProtobuf(cleanSpan: CleanSpanData): Span {\n    return {\n      traceId: cleanSpan.traceId,\n      spanId: cleanSpan.spanId,\n      parentSpanId: cleanSpan.parentSpanId,\n      name: cleanSpan.name,\n      packageName: cleanSpan.packageName,\n      instrumentationName: cleanSpan.instrumentationName,\n      submoduleName: cleanSpan.submoduleName,\n      packageType: cleanSpan.packageType || PackageType.UNSPECIFIED,\n      inputValue: toStruct(cleanSpan.inputValue),\n      outputValue: toStruct(cleanSpan.outputValue),\n      inputSchema: cleanSpan.inputSchema,\n      outputSchema: cleanSpan.outputSchema,\n      inputSchemaHash: cleanSpan.inputSchemaHash || \"\",\n      outputSchemaHash: cleanSpan.outputSchemaHash || \"\",\n      inputValueHash: cleanSpan.inputValueHash || \"\",\n      outputValueHash: cleanSpan.outputValueHash || \"\",\n      kind: this.mapSpanKind(cleanSpan.kind),\n      status: cleanSpan.status,\n      isPreAppStart: cleanSpan.isPreAppStart,\n      timestamp: { seconds: BigInt(cleanSpan.timestamp.seconds), nanos: cleanSpan.timestamp.nanos },\n      duration: { seconds: BigInt(cleanSpan.duration.seconds), nanos: cleanSpan.duration.nanos },\n      isRootSpan: cleanSpan.isRootSpan,\n      metadata: toStruct(cleanSpan.metadata),\n    };\n  }\n\n  private mapSpanKind(kind: OtelSpanKind): DriftSpanKind {\n    switch (kind) {\n      case OtelSpanKind.CLIENT:\n        return DriftSpanKind.CLIENT;\n      case OtelSpanKind.SERVER:\n        return DriftSpanKind.SERVER;\n      case OtelSpanKind.PRODUCER:\n        return DriftSpanKind.PRODUCER;\n      case OtelSpanKind.CONSUMER:\n        return DriftSpanKind.CONSUMER;\n      case OtelSpanKind.INTERNAL:\n        return DriftSpanKind.INTERNAL;\n      default:\n        return DriftSpanKind.UNSPECIFIED;\n    }\n  }\n\n  async shutdown(): Promise<void> {\n    // No cleanup needed for API exporter\n    return Promise.resolve();\n  }\n}\n","import { SpanExporter, ReadableSpan } from \"@opentelemetry/sdk-trace-base\";\nimport { ExportResult, ExportResultCode } from \"@opentelemetry/core\";\nimport { TuskDriftMode } from \"../TuskDrift\";\nimport { SpanTransformer } from \"./SpanTransformer\";\nimport { FilesystemSpanAdapter } from \"./adapters/FilesystemSpanAdapter\";\nimport { ApiSpanAdapter } from \"./adapters/ApiSpanAdapter\";\nimport { logger } from \"../utils/logger\";\nimport { CleanSpanData, TD_INSTRUMENTATION_LIBRARY_NAME, TdSpanAttributes } from \"../types\";\nimport { TraceBlockingManager } from \"./TraceBlockingManager\";\n\nexport interface TdTraceExporterConfig {\n  baseDirectory: string;\n  mode: TuskDriftMode;\n  observableServiceId?: string;\n  useRemoteExport: boolean;\n  apiKey?: string;\n  tuskBackendBaseUrl: string;\n  environment: string;\n  sdkVersion: string;\n  sdkInstanceId: string;\n}\n\n/** A SpanExportAdapter defines the actual thing that exports to api/file/etc.\n * */\nexport interface SpanExportAdapter {\n  name: string;\n  exportSpans(spans: CleanSpanData[]): Promise<ExportResult>;\n  shutdown(): Promise<void>;\n}\n\nexport class TdSpanExporter implements SpanExporter {\n  private mode: TuskDriftMode;\n  private adapters: SpanExportAdapter[] = [];\n\n  constructor(config: TdTraceExporterConfig) {\n    this.mode = config.mode;\n\n    this.setupDefaultAdapters(config);\n\n    logger.debug(`TdSpanExporter initialized with ${this.adapters.length} adapter(s)`);\n  }\n\n  private setupDefaultAdapters(config: TdTraceExporterConfig): void {\n    if (config.useRemoteExport && config.apiKey && config.observableServiceId) {\n      logger.debug(\"TdSpanExporter using API adapter\");\n      this.addAdapter(\n        new ApiSpanAdapter({\n          apiKey: config.apiKey,\n          tuskBackendBaseUrl: config.tuskBackendBaseUrl,\n          observableServiceId: config.observableServiceId,\n          environment: config.environment,\n          sdkVersion: config.sdkVersion,\n          sdkInstanceId: config.sdkInstanceId,\n        }),\n      );\n    } else {\n      logger.debug(\"TdSpanExporter falling back to filesystem adapter\");\n      this.addAdapter(\n        new FilesystemSpanAdapter({\n          baseDirectory: config.baseDirectory,\n        }),\n      );\n    }\n  }\n\n  getAdapters() {\n    return this.adapters;\n  }\n\n  /**\n   * Add a custom export adapter\n   */\n  addAdapter(adapter: SpanExportAdapter): void {\n    this.adapters.push(adapter);\n    logger.debug(`Added ${adapter.name} adapter. Total adapters: ${this.adapters.length}`);\n  }\n\n  /**\n   * Remove a specific adapter\n   */\n  removeAdapter(adapter: SpanExportAdapter): void {\n    const index = this.adapters.indexOf(adapter);\n    if (index > -1) {\n      this.adapters.splice(index, 1);\n      logger.debug(`Removed ${adapter.name} adapter. Total adapters: ${this.adapters.length}`);\n    }\n  }\n\n  /**\n   * Clear all adapters\n   */\n  clearAdapters(): void {\n    this.adapters = [];\n    logger.debug(\"All adapters cleared\");\n  }\n\n  /**\n   * Set the mode for determining which adapters to run\n   */\n  setMode(mode: TuskDriftMode): void {\n    this.mode = mode;\n  }\n\n  /**\n   * Export spans using all configured adapters\n   */\n  export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void {\n    logger.debug(`TdSpanExporter.export() called with ${spans.length} span(s)`);\n\n    const traceBlockingManager = TraceBlockingManager.getInstance();\n\n    const filteredSpansBasedOnLibraryName: ReadableSpan[] = spans.filter((span) => {\n      // Only keep spans created from this SDK\n      // This is set in getTracer in TuskDrift.ts\n      if (span.instrumentationLibrary.name === TD_INSTRUMENTATION_LIBRARY_NAME) {\n        return true;\n      }\n      return false;\n    });\n\n    logger.debug(\n      `After filtering based on library name: ${filteredSpansBasedOnLibraryName.length} span(s) remaining`,\n    );\n\n    const MAX_SPAN_SIZE_MB = 1;\n    const MAX_SPAN_SIZE_BYTES = MAX_SPAN_SIZE_MB * 1024 * 1024;\n\n    const filteredBlockedSpans: ReadableSpan[] = filteredSpansBasedOnLibraryName.filter((span) => {\n      const traceId = span.spanContext().traceId;\n\n      // Early exit: if this trace is already blocked, skip this span\n      if (traceBlockingManager.isTraceBlocked(traceId)) {\n        logger.debug(\n          `Skipping span '${span.name}' (${span.spanContext().spanId}) - trace ${traceId} is blocked`,\n        );\n        return false;\n      }\n\n      const inputValueString = (span.attributes[TdSpanAttributes.INPUT_VALUE] as string) || \"\";\n      const outputValueString = (span.attributes[TdSpanAttributes.OUTPUT_VALUE] as string) || \"\";\n\n      // Calculate approximate size (input + output are the main contributors)\n      // Add a small buffer for other attributes and metadata\n      const inputSize = Buffer.byteLength(inputValueString, \"utf8\");\n      const outputSize = Buffer.byteLength(outputValueString, \"utf8\");\n      const estimatedTotalSize = inputSize + outputSize + 50000; // 50KB buffer for other data\n\n      const estimatedSizeMB = estimatedTotalSize / (1024 * 1024);\n\n      if (estimatedTotalSize > MAX_SPAN_SIZE_BYTES) {\n        // Block this trace to prevent future spans from being created\n        traceBlockingManager.blockTrace(traceId);\n\n        logger.warn(\n          `Blocking trace ${traceId} - span '${span.name}' (${span.spanContext().spanId}) has estimated size ${estimatedSizeMB.toFixed(2)} MB exceeding limit of ${MAX_SPAN_SIZE_MB} MB. Future spans for this trace will be prevented.`,\n        );\n        return false;\n      }\n      return true;\n    });\n\n    logger.debug(\n      `Filtered ${filteredSpansBasedOnLibraryName.length - filteredBlockedSpans.length} blocked/oversized span(s), ${filteredBlockedSpans.length} remaining`,\n    );\n\n    // Transform spans to CleanSpanData\n    const cleanSpans: CleanSpanData[] = filteredBlockedSpans.map((span) =>\n      SpanTransformer.transformSpanToCleanJSON(span),\n    );\n\n    if (this.adapters.length === 0) {\n      logger.debug(\"No adapters configured\");\n      resultCallback({ code: ExportResultCode.SUCCESS });\n      return;\n    }\n\n    // Filter adapters based on mode\n    const activeAdapters = this.getActiveAdapters();\n\n    if (activeAdapters.length === 0) {\n      logger.debug(`No active adapters for mode: ${this.mode}`);\n      resultCallback({ code: ExportResultCode.SUCCESS });\n      return;\n    }\n\n    // Export to all active adapters\n    Promise.all(activeAdapters.map((adapter) => adapter.exportSpans(cleanSpans)))\n      .then(() => resultCallback({ code: ExportResultCode.SUCCESS }))\n      .catch((error) => resultCallback({ code: ExportResultCode.FAILED, error }));\n  }\n\n  private getActiveAdapters(): SpanExportAdapter[] {\n    if (this.mode !== TuskDriftMode.RECORD) {\n      // In non-RECORD mode, only run in-memory and callback adapters\n      return this.adapters.filter(\n        (adapter) => adapter.name === \"in-memory\" || adapter.name === \"callback\",\n      );\n    }\n\n    // In RECORD mode, run all adapters\n    return this.adapters;\n  }\n\n  /**\n   * Shutdown all adapters\n   */\n  async shutdown(): Promise<void> {\n    await Promise.all(this.adapters.map((adapter) => adapter.shutdown()));\n  }\n\n  /**\n   * Force flush any pending spans\n   */\n  async forceFlush(): Promise<void> {\n    // Most adapters write immediately, so nothing to flush\n    return Promise.resolve();\n  }\n}\n","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractAsyncHooksContextManager = void 0;\nconst events_1 = require(\"events\");\nconst ADD_LISTENER_METHODS = [\n    'addListener',\n    'on',\n    'once',\n    'prependListener',\n    'prependOnceListener',\n];\nclass AbstractAsyncHooksContextManager {\n    constructor() {\n        this._kOtListeners = Symbol('OtListeners');\n        this._wrapped = false;\n    }\n    /**\n     * Binds a the certain context or the active one to the target function and then returns the target\n     * @param context A context (span) to be bind to target\n     * @param target a function or event emitter. When target or one of its callbacks is called,\n     *  the provided context will be used as the active context for the duration of the call.\n     */\n    bind(context, target) {\n        if (target instanceof events_1.EventEmitter) {\n            return this._bindEventEmitter(context, target);\n        }\n        if (typeof target === 'function') {\n            return this._bindFunction(context, target);\n        }\n        return target;\n    }\n    _bindFunction(context, target) {\n        const manager = this;\n        const contextWrapper = function (...args) {\n            return manager.with(context, () => target.apply(this, args));\n        };\n        Object.defineProperty(contextWrapper, 'length', {\n            enumerable: false,\n            configurable: true,\n            writable: false,\n            value: target.length,\n        });\n        /**\n         * It isn't possible to tell Typescript that contextWrapper is the same as T\n         * so we forced to cast as any here.\n         */\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        return contextWrapper;\n    }\n    /**\n     * By default, EventEmitter call their callback with their context, which we do\n     * not want, instead we will bind a specific context to all callbacks that\n     * go through it.\n     * @param context the context we want to bind\n     * @param ee EventEmitter an instance of EventEmitter to patch\n     */\n    _bindEventEmitter(context, ee) {\n        const map = this._getPatchMap(ee);\n        if (map !== undefined)\n            return ee;\n        this._createPatchMap(ee);\n        // patch methods that add a listener to propagate context\n        ADD_LISTENER_METHODS.forEach(methodName => {\n            if (ee[methodName] === undefined)\n                return;\n            ee[methodName] = this._patchAddListener(ee, ee[methodName], context);\n        });\n        // patch methods that remove a listener\n        if (typeof ee.removeListener === 'function') {\n            ee.removeListener = this._patchRemoveListener(ee, ee.removeListener);\n        }\n        if (typeof ee.off === 'function') {\n            ee.off = this._patchRemoveListener(ee, ee.off);\n        }\n        // patch method that remove all listeners\n        if (typeof ee.removeAllListeners === 'function') {\n            ee.removeAllListeners = this._patchRemoveAllListeners(ee, ee.removeAllListeners);\n        }\n        return ee;\n    }\n    /**\n     * Patch methods that remove a given listener so that we match the \"patched\"\n     * version of that listener (the one that propagate context).\n     * @param ee EventEmitter instance\n     * @param original reference to the patched method\n     */\n    _patchRemoveListener(ee, original) {\n        const contextManager = this;\n        return function (event, listener) {\n            var _a;\n            const events = (_a = contextManager._getPatchMap(ee)) === null || _a === void 0 ? void 0 : _a[event];\n            if (events === undefined) {\n                return original.call(this, event, listener);\n            }\n            const patchedListener = events.get(listener);\n            return original.call(this, event, patchedListener || listener);\n        };\n    }\n    /**\n     * Patch methods that remove all listeners so we remove our\n     * internal references for a given event.\n     * @param ee EventEmitter instance\n     * @param original reference to the patched method\n     */\n    _patchRemoveAllListeners(ee, original) {\n        const contextManager = this;\n        return function (event) {\n            const map = contextManager._getPatchMap(ee);\n            if (map !== undefined) {\n                if (arguments.length === 0) {\n                    contextManager._createPatchMap(ee);\n                }\n                else if (map[event] !== undefined) {\n                    delete map[event];\n                }\n            }\n            return original.apply(this, arguments);\n        };\n    }\n    /**\n     * Patch methods on an event emitter instance that can add listeners so we\n     * can force them to propagate a given context.\n     * @param ee EventEmitter instance\n     * @param original reference to the patched method\n     * @param [context] context to propagate when calling listeners\n     */\n    _patchAddListener(ee, original, context) {\n        const contextManager = this;\n        return function (event, listener) {\n            /**\n             * This check is required to prevent double-wrapping the listener.\n             * The implementation for ee.once wraps the listener and calls ee.on.\n             * Without this check, we would wrap that wrapped listener.\n             * This causes an issue because ee.removeListener depends on the onceWrapper\n             * to properly remove the listener. If we wrap their wrapper, we break\n             * that detection.\n             */\n            if (contextManager._wrapped) {\n                return original.call(this, event, listener);\n            }\n            let map = contextManager._getPatchMap(ee);\n            if (map === undefined) {\n                map = contextManager._createPatchMap(ee);\n            }\n            let listeners = map[event];\n            if (listeners === undefined) {\n                listeners = new WeakMap();\n                map[event] = listeners;\n            }\n            const patchedListener = contextManager.bind(context, listener);\n            // store a weak reference of the user listener to ours\n            listeners.set(listener, patchedListener);\n            /**\n             * See comment at the start of this function for the explanation of this property.\n             */\n            contextManager._wrapped = true;\n            try {\n                return original.call(this, event, patchedListener);\n            }\n            finally {\n                contextManager._wrapped = false;\n            }\n        };\n    }\n    _createPatchMap(ee) {\n        const map = Object.create(null);\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        ee[this._kOtListeners] = map;\n        return map;\n    }\n    _getPatchMap(ee) {\n        return ee[this._kOtListeners];\n    }\n}\nexports.AbstractAsyncHooksContextManager = AbstractAsyncHooksContextManager;\n//# sourceMappingURL=AbstractAsyncHooksContextManager.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncHooksContextManager = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst asyncHooks = require(\"async_hooks\");\nconst AbstractAsyncHooksContextManager_1 = require(\"./AbstractAsyncHooksContextManager\");\nclass AsyncHooksContextManager extends AbstractAsyncHooksContextManager_1.AbstractAsyncHooksContextManager {\n    constructor() {\n        super();\n        this._contexts = new Map();\n        this._stack = [];\n        this._asyncHook = asyncHooks.createHook({\n            init: this._init.bind(this),\n            before: this._before.bind(this),\n            after: this._after.bind(this),\n            destroy: this._destroy.bind(this),\n            promiseResolve: this._destroy.bind(this),\n        });\n    }\n    active() {\n        var _a;\n        return (_a = this._stack[this._stack.length - 1]) !== null && _a !== void 0 ? _a : api_1.ROOT_CONTEXT;\n    }\n    with(context, fn, thisArg, ...args) {\n        this._enterContext(context);\n        try {\n            return fn.call(thisArg, ...args);\n        }\n        finally {\n            this._exitContext();\n        }\n    }\n    enable() {\n        this._asyncHook.enable();\n        return this;\n    }\n    disable() {\n        this._asyncHook.disable();\n        this._contexts.clear();\n        this._stack = [];\n        return this;\n    }\n    /**\n     * Init hook will be called when userland create a async context, setting the\n     * context as the current one if it exist.\n     * @param uid id of the async context\n     * @param type the resource type\n     */\n    _init(uid, type) {\n        // ignore TIMERWRAP as they combine timers with same timeout which can lead to\n        // false context propagation. TIMERWRAP has been removed in node 11\n        // every timer has it's own `Timeout` resource anyway which is used to propagate\n        // context.\n        if (type === 'TIMERWRAP')\n            return;\n        const context = this._stack[this._stack.length - 1];\n        if (context !== undefined) {\n            this._contexts.set(uid, context);\n        }\n    }\n    /**\n     * Destroy hook will be called when a given context is no longer used so we can\n     * remove its attached context.\n     * @param uid uid of the async context\n     */\n    _destroy(uid) {\n        this._contexts.delete(uid);\n    }\n    /**\n     * Before hook is called just before executing a async context.\n     * @param uid uid of the async context\n     */\n    _before(uid) {\n        const context = this._contexts.get(uid);\n        if (context !== undefined) {\n            this._enterContext(context);\n        }\n    }\n    /**\n     * After hook is called just after completing the execution of a async context.\n     */\n    _after() {\n        this._exitContext();\n    }\n    /**\n     * Set the given context as active\n     */\n    _enterContext(context) {\n        this._stack.push(context);\n    }\n    /**\n     * Remove the context at the root of the stack\n     */\n    _exitContext() {\n        this._stack.pop();\n    }\n}\nexports.AsyncHooksContextManager = AsyncHooksContextManager;\n//# sourceMappingURL=AsyncHooksContextManager.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncLocalStorageContextManager = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst async_hooks_1 = require(\"async_hooks\");\nconst AbstractAsyncHooksContextManager_1 = require(\"./AbstractAsyncHooksContextManager\");\nclass AsyncLocalStorageContextManager extends AbstractAsyncHooksContextManager_1.AbstractAsyncHooksContextManager {\n    constructor() {\n        super();\n        this._asyncLocalStorage = new async_hooks_1.AsyncLocalStorage();\n    }\n    active() {\n        var _a;\n        return (_a = this._asyncLocalStorage.getStore()) !== null && _a !== void 0 ? _a : api_1.ROOT_CONTEXT;\n    }\n    with(context, fn, thisArg, ...args) {\n        const cb = thisArg == null ? fn : fn.bind(thisArg);\n        return this._asyncLocalStorage.run(context, cb, ...args);\n    }\n    enable() {\n        return this;\n    }\n    disable() {\n        this._asyncLocalStorage.disable();\n        return this;\n    }\n}\nexports.AsyncLocalStorageContextManager = AsyncLocalStorageContextManager;\n//# sourceMappingURL=AsyncLocalStorageContextManager.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncLocalStorageContextManager = exports.AsyncHooksContextManager = void 0;\nvar AsyncHooksContextManager_1 = require(\"./AsyncHooksContextManager\");\nObject.defineProperty(exports, \"AsyncHooksContextManager\", { enumerable: true, get: function () { return AsyncHooksContextManager_1.AsyncHooksContextManager; } });\nvar AsyncLocalStorageContextManager_1 = require(\"./AsyncLocalStorageContextManager\");\nObject.defineProperty(exports, \"AsyncLocalStorageContextManager\", { enumerable: true, get: function () { return AsyncLocalStorageContextManager_1.AsyncLocalStorageContextManager; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.B3_DEBUG_FLAG_KEY = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\n/** shared context for storing an extracted b3 debug flag */\nexports.B3_DEBUG_FLAG_KEY = (0, api_1.createContextKey)('OpenTelemetry Context Key B3 Debug Flag');\n//# sourceMappingURL=common.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.X_B3_FLAGS = exports.X_B3_PARENT_SPAN_ID = exports.X_B3_SAMPLED = exports.X_B3_SPAN_ID = exports.X_B3_TRACE_ID = exports.B3_CONTEXT_HEADER = void 0;\n/** B3 single-header key */\nexports.B3_CONTEXT_HEADER = 'b3';\n/* b3 multi-header keys */\nexports.X_B3_TRACE_ID = 'x-b3-traceid';\nexports.X_B3_SPAN_ID = 'x-b3-spanid';\nexports.X_B3_SAMPLED = 'x-b3-sampled';\nexports.X_B3_PARENT_SPAN_ID = 'x-b3-parentspanid';\nexports.X_B3_FLAGS = 'x-b3-flags';\n//# sourceMappingURL=constants.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.B3MultiPropagator = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst common_1 = require(\"./common\");\nconst constants_1 = require(\"./constants\");\nconst VALID_SAMPLED_VALUES = new Set([true, 'true', 'True', '1', 1]);\nconst VALID_UNSAMPLED_VALUES = new Set([false, 'false', 'False', '0', 0]);\nfunction isValidSampledValue(sampled) {\n    return sampled === api_1.TraceFlags.SAMPLED || sampled === api_1.TraceFlags.NONE;\n}\nfunction parseHeader(header) {\n    return Array.isArray(header) ? header[0] : header;\n}\nfunction getHeaderValue(carrier, getter, key) {\n    const header = getter.get(carrier, key);\n    return parseHeader(header);\n}\nfunction getTraceId(carrier, getter) {\n    const traceId = getHeaderValue(carrier, getter, constants_1.X_B3_TRACE_ID);\n    if (typeof traceId === 'string') {\n        return traceId.padStart(32, '0');\n    }\n    return '';\n}\nfunction getSpanId(carrier, getter) {\n    const spanId = getHeaderValue(carrier, getter, constants_1.X_B3_SPAN_ID);\n    if (typeof spanId === 'string') {\n        return spanId;\n    }\n    return '';\n}\nfunction getDebug(carrier, getter) {\n    const debug = getHeaderValue(carrier, getter, constants_1.X_B3_FLAGS);\n    return debug === '1' ? '1' : undefined;\n}\nfunction getTraceFlags(carrier, getter) {\n    const traceFlags = getHeaderValue(carrier, getter, constants_1.X_B3_SAMPLED);\n    const debug = getDebug(carrier, getter);\n    if (debug === '1' || VALID_SAMPLED_VALUES.has(traceFlags)) {\n        return api_1.TraceFlags.SAMPLED;\n    }\n    if (traceFlags === undefined || VALID_UNSAMPLED_VALUES.has(traceFlags)) {\n        return api_1.TraceFlags.NONE;\n    }\n    // This indicates to isValidSampledValue that this is not valid\n    return;\n}\n/**\n * Propagator for the B3 multiple-header HTTP format.\n * Based on: https://github.com/openzipkin/b3-propagation\n */\nclass B3MultiPropagator {\n    inject(context, carrier, setter) {\n        const spanContext = api_1.trace.getSpanContext(context);\n        if (!spanContext ||\n            !(0, api_1.isSpanContextValid)(spanContext) ||\n            (0, core_1.isTracingSuppressed)(context))\n            return;\n        const debug = context.getValue(common_1.B3_DEBUG_FLAG_KEY);\n        setter.set(carrier, constants_1.X_B3_TRACE_ID, spanContext.traceId);\n        setter.set(carrier, constants_1.X_B3_SPAN_ID, spanContext.spanId);\n        // According to the B3 spec, if the debug flag is set,\n        // the sampled flag shouldn't be propagated as well.\n        if (debug === '1') {\n            setter.set(carrier, constants_1.X_B3_FLAGS, debug);\n        }\n        else if (spanContext.traceFlags !== undefined) {\n            // We set the header only if there is an existing sampling decision.\n            // Otherwise we will omit it => Absent.\n            setter.set(carrier, constants_1.X_B3_SAMPLED, (api_1.TraceFlags.SAMPLED & spanContext.traceFlags) === api_1.TraceFlags.SAMPLED\n                ? '1'\n                : '0');\n        }\n    }\n    extract(context, carrier, getter) {\n        const traceId = getTraceId(carrier, getter);\n        const spanId = getSpanId(carrier, getter);\n        const traceFlags = getTraceFlags(carrier, getter);\n        const debug = getDebug(carrier, getter);\n        if ((0, api_1.isValidTraceId)(traceId) &&\n            (0, api_1.isValidSpanId)(spanId) &&\n            isValidSampledValue(traceFlags)) {\n            context = context.setValue(common_1.B3_DEBUG_FLAG_KEY, debug);\n            return api_1.trace.setSpanContext(context, {\n                traceId,\n                spanId,\n                isRemote: true,\n                traceFlags,\n            });\n        }\n        return context;\n    }\n    fields() {\n        return [\n            constants_1.X_B3_TRACE_ID,\n            constants_1.X_B3_SPAN_ID,\n            constants_1.X_B3_FLAGS,\n            constants_1.X_B3_SAMPLED,\n            constants_1.X_B3_PARENT_SPAN_ID,\n        ];\n    }\n}\nexports.B3MultiPropagator = B3MultiPropagator;\n//# sourceMappingURL=B3MultiPropagator.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.B3SinglePropagator = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst common_1 = require(\"./common\");\nconst constants_1 = require(\"./constants\");\nconst B3_CONTEXT_REGEX = /((?:[0-9a-f]{16}){1,2})-([0-9a-f]{16})(?:-([01d](?![0-9a-f])))?(?:-([0-9a-f]{16}))?/;\nconst PADDING = '0'.repeat(16);\nconst SAMPLED_VALUES = new Set(['d', '1']);\nconst DEBUG_STATE = 'd';\nfunction convertToTraceId128(traceId) {\n    return traceId.length === 32 ? traceId : `${PADDING}${traceId}`;\n}\nfunction convertToTraceFlags(samplingState) {\n    if (samplingState && SAMPLED_VALUES.has(samplingState)) {\n        return api_1.TraceFlags.SAMPLED;\n    }\n    return api_1.TraceFlags.NONE;\n}\n/**\n * Propagator for the B3 single-header HTTP format.\n * Based on: https://github.com/openzipkin/b3-propagation\n */\nclass B3SinglePropagator {\n    inject(context, carrier, setter) {\n        const spanContext = api_1.trace.getSpanContext(context);\n        if (!spanContext ||\n            !(0, api_1.isSpanContextValid)(spanContext) ||\n            (0, core_1.isTracingSuppressed)(context))\n            return;\n        const samplingState = context.getValue(common_1.B3_DEBUG_FLAG_KEY) || spanContext.traceFlags & 0x1;\n        const value = `${spanContext.traceId}-${spanContext.spanId}-${samplingState}`;\n        setter.set(carrier, constants_1.B3_CONTEXT_HEADER, value);\n    }\n    extract(context, carrier, getter) {\n        const header = getter.get(carrier, constants_1.B3_CONTEXT_HEADER);\n        const b3Context = Array.isArray(header) ? header[0] : header;\n        if (typeof b3Context !== 'string')\n            return context;\n        const match = b3Context.match(B3_CONTEXT_REGEX);\n        if (!match)\n            return context;\n        const [, extractedTraceId, spanId, samplingState] = match;\n        const traceId = convertToTraceId128(extractedTraceId);\n        if (!(0, api_1.isValidTraceId)(traceId) || !(0, api_1.isValidSpanId)(spanId))\n            return context;\n        const traceFlags = convertToTraceFlags(samplingState);\n        if (samplingState === DEBUG_STATE) {\n            context = context.setValue(common_1.B3_DEBUG_FLAG_KEY, samplingState);\n        }\n        return api_1.trace.setSpanContext(context, {\n            traceId,\n            spanId,\n            isRemote: true,\n            traceFlags,\n        });\n    }\n    fields() {\n        return [constants_1.B3_CONTEXT_HEADER];\n    }\n}\nexports.B3SinglePropagator = B3SinglePropagator;\n//# sourceMappingURL=B3SinglePropagator.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.B3InjectEncoding = void 0;\n/** Enumeration of B3 inject encodings */\nvar B3InjectEncoding;\n(function (B3InjectEncoding) {\n    B3InjectEncoding[B3InjectEncoding[\"SINGLE_HEADER\"] = 0] = \"SINGLE_HEADER\";\n    B3InjectEncoding[B3InjectEncoding[\"MULTI_HEADER\"] = 1] = \"MULTI_HEADER\";\n})(B3InjectEncoding = exports.B3InjectEncoding || (exports.B3InjectEncoding = {}));\n//# sourceMappingURL=types.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.B3Propagator = void 0;\nconst core_1 = require(\"@opentelemetry/core\");\nconst B3MultiPropagator_1 = require(\"./B3MultiPropagator\");\nconst B3SinglePropagator_1 = require(\"./B3SinglePropagator\");\nconst constants_1 = require(\"./constants\");\nconst types_1 = require(\"./types\");\n/**\n * Propagator that extracts B3 context in both single and multi-header variants,\n * with configurable injection format defaulting to B3 single-header. Due to\n * the asymmetry in injection and extraction formats this is not suitable to\n * be implemented as a composite propagator.\n * Based on: https://github.com/openzipkin/b3-propagation\n */\nclass B3Propagator {\n    constructor(config = {}) {\n        this._b3MultiPropagator = new B3MultiPropagator_1.B3MultiPropagator();\n        this._b3SinglePropagator = new B3SinglePropagator_1.B3SinglePropagator();\n        if (config.injectEncoding === types_1.B3InjectEncoding.MULTI_HEADER) {\n            this._inject = this._b3MultiPropagator.inject;\n            this._fields = this._b3MultiPropagator.fields();\n        }\n        else {\n            this._inject = this._b3SinglePropagator.inject;\n            this._fields = this._b3SinglePropagator.fields();\n        }\n    }\n    inject(context, carrier, setter) {\n        if ((0, core_1.isTracingSuppressed)(context)) {\n            return;\n        }\n        this._inject(context, carrier, setter);\n    }\n    extract(context, carrier, getter) {\n        const header = getter.get(carrier, constants_1.B3_CONTEXT_HEADER);\n        const b3Context = Array.isArray(header) ? header[0] : header;\n        if (b3Context) {\n            return this._b3SinglePropagator.extract(context, carrier, getter);\n        }\n        else {\n            return this._b3MultiPropagator.extract(context, carrier, getter);\n        }\n    }\n    fields() {\n        return this._fields;\n    }\n}\nexports.B3Propagator = B3Propagator;\n//# sourceMappingURL=B3Propagator.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.B3InjectEncoding = exports.X_B3_TRACE_ID = exports.X_B3_SPAN_ID = exports.X_B3_SAMPLED = exports.X_B3_PARENT_SPAN_ID = exports.X_B3_FLAGS = exports.B3_CONTEXT_HEADER = exports.B3Propagator = void 0;\nvar B3Propagator_1 = require(\"./B3Propagator\");\nObject.defineProperty(exports, \"B3Propagator\", { enumerable: true, get: function () { return B3Propagator_1.B3Propagator; } });\nvar constants_1 = require(\"./constants\");\nObject.defineProperty(exports, \"B3_CONTEXT_HEADER\", { enumerable: true, get: function () { return constants_1.B3_CONTEXT_HEADER; } });\nObject.defineProperty(exports, \"X_B3_FLAGS\", { enumerable: true, get: function () { return constants_1.X_B3_FLAGS; } });\nObject.defineProperty(exports, \"X_B3_PARENT_SPAN_ID\", { enumerable: true, get: function () { return constants_1.X_B3_PARENT_SPAN_ID; } });\nObject.defineProperty(exports, \"X_B3_SAMPLED\", { enumerable: true, get: function () { return constants_1.X_B3_SAMPLED; } });\nObject.defineProperty(exports, \"X_B3_SPAN_ID\", { enumerable: true, get: function () { return constants_1.X_B3_SPAN_ID; } });\nObject.defineProperty(exports, \"X_B3_TRACE_ID\", { enumerable: true, get: function () { return constants_1.X_B3_TRACE_ID; } });\nvar types_1 = require(\"./types\");\nObject.defineProperty(exports, \"B3InjectEncoding\", { enumerable: true, get: function () { return types_1.B3InjectEncoding; } });\n//# sourceMappingURL=index.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Creates a const map from the given values\n * @param values - An array of values to be used as keys and values in the map.\n * @returns A populated version of the map with the values and keys derived from the values.\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function createConstMap(values) {\n    // eslint-disable-next-line prefer-const, @typescript-eslint/no-explicit-any\n    var res = {};\n    var len = values.length;\n    for (var lp = 0; lp < len; lp++) {\n        var val = values[lp];\n        if (val) {\n            res[String(val).toUpperCase().replace(/[-.]/g, '_')] = val;\n        }\n    }\n    return res;\n}\n//# sourceMappingURL=utils.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createConstMap } from '../internal/utils';\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticAttributes\n//----------------------------------------------------------------------------------------------------------\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_AWS_LAMBDA_INVOKED_ARN = 'aws.lambda.invoked_arn';\nvar TMP_DB_SYSTEM = 'db.system';\nvar TMP_DB_CONNECTION_STRING = 'db.connection_string';\nvar TMP_DB_USER = 'db.user';\nvar TMP_DB_JDBC_DRIVER_CLASSNAME = 'db.jdbc.driver_classname';\nvar TMP_DB_NAME = 'db.name';\nvar TMP_DB_STATEMENT = 'db.statement';\nvar TMP_DB_OPERATION = 'db.operation';\nvar TMP_DB_MSSQL_INSTANCE_NAME = 'db.mssql.instance_name';\nvar TMP_DB_CASSANDRA_KEYSPACE = 'db.cassandra.keyspace';\nvar TMP_DB_CASSANDRA_PAGE_SIZE = 'db.cassandra.page_size';\nvar TMP_DB_CASSANDRA_CONSISTENCY_LEVEL = 'db.cassandra.consistency_level';\nvar TMP_DB_CASSANDRA_TABLE = 'db.cassandra.table';\nvar TMP_DB_CASSANDRA_IDEMPOTENCE = 'db.cassandra.idempotence';\nvar TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'db.cassandra.speculative_execution_count';\nvar TMP_DB_CASSANDRA_COORDINATOR_ID = 'db.cassandra.coordinator.id';\nvar TMP_DB_CASSANDRA_COORDINATOR_DC = 'db.cassandra.coordinator.dc';\nvar TMP_DB_HBASE_NAMESPACE = 'db.hbase.namespace';\nvar TMP_DB_REDIS_DATABASE_INDEX = 'db.redis.database_index';\nvar TMP_DB_MONGODB_COLLECTION = 'db.mongodb.collection';\nvar TMP_DB_SQL_TABLE = 'db.sql.table';\nvar TMP_EXCEPTION_TYPE = 'exception.type';\nvar TMP_EXCEPTION_MESSAGE = 'exception.message';\nvar TMP_EXCEPTION_STACKTRACE = 'exception.stacktrace';\nvar TMP_EXCEPTION_ESCAPED = 'exception.escaped';\nvar TMP_FAAS_TRIGGER = 'faas.trigger';\nvar TMP_FAAS_EXECUTION = 'faas.execution';\nvar TMP_FAAS_DOCUMENT_COLLECTION = 'faas.document.collection';\nvar TMP_FAAS_DOCUMENT_OPERATION = 'faas.document.operation';\nvar TMP_FAAS_DOCUMENT_TIME = 'faas.document.time';\nvar TMP_FAAS_DOCUMENT_NAME = 'faas.document.name';\nvar TMP_FAAS_TIME = 'faas.time';\nvar TMP_FAAS_CRON = 'faas.cron';\nvar TMP_FAAS_COLDSTART = 'faas.coldstart';\nvar TMP_FAAS_INVOKED_NAME = 'faas.invoked_name';\nvar TMP_FAAS_INVOKED_PROVIDER = 'faas.invoked_provider';\nvar TMP_FAAS_INVOKED_REGION = 'faas.invoked_region';\nvar TMP_NET_TRANSPORT = 'net.transport';\nvar TMP_NET_PEER_IP = 'net.peer.ip';\nvar TMP_NET_PEER_PORT = 'net.peer.port';\nvar TMP_NET_PEER_NAME = 'net.peer.name';\nvar TMP_NET_HOST_IP = 'net.host.ip';\nvar TMP_NET_HOST_PORT = 'net.host.port';\nvar TMP_NET_HOST_NAME = 'net.host.name';\nvar TMP_NET_HOST_CONNECTION_TYPE = 'net.host.connection.type';\nvar TMP_NET_HOST_CONNECTION_SUBTYPE = 'net.host.connection.subtype';\nvar TMP_NET_HOST_CARRIER_NAME = 'net.host.carrier.name';\nvar TMP_NET_HOST_CARRIER_MCC = 'net.host.carrier.mcc';\nvar TMP_NET_HOST_CARRIER_MNC = 'net.host.carrier.mnc';\nvar TMP_NET_HOST_CARRIER_ICC = 'net.host.carrier.icc';\nvar TMP_PEER_SERVICE = 'peer.service';\nvar TMP_ENDUSER_ID = 'enduser.id';\nvar TMP_ENDUSER_ROLE = 'enduser.role';\nvar TMP_ENDUSER_SCOPE = 'enduser.scope';\nvar TMP_THREAD_ID = 'thread.id';\nvar TMP_THREAD_NAME = 'thread.name';\nvar TMP_CODE_FUNCTION = 'code.function';\nvar TMP_CODE_NAMESPACE = 'code.namespace';\nvar TMP_CODE_FILEPATH = 'code.filepath';\nvar TMP_CODE_LINENO = 'code.lineno';\nvar TMP_HTTP_METHOD = 'http.method';\nvar TMP_HTTP_URL = 'http.url';\nvar TMP_HTTP_TARGET = 'http.target';\nvar TMP_HTTP_HOST = 'http.host';\nvar TMP_HTTP_SCHEME = 'http.scheme';\nvar TMP_HTTP_STATUS_CODE = 'http.status_code';\nvar TMP_HTTP_FLAVOR = 'http.flavor';\nvar TMP_HTTP_USER_AGENT = 'http.user_agent';\nvar TMP_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length';\nvar TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = 'http.request_content_length_uncompressed';\nvar TMP_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length';\nvar TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = 'http.response_content_length_uncompressed';\nvar TMP_HTTP_SERVER_NAME = 'http.server_name';\nvar TMP_HTTP_ROUTE = 'http.route';\nvar TMP_HTTP_CLIENT_IP = 'http.client_ip';\nvar TMP_AWS_DYNAMODB_TABLE_NAMES = 'aws.dynamodb.table_names';\nvar TMP_AWS_DYNAMODB_CONSUMED_CAPACITY = 'aws.dynamodb.consumed_capacity';\nvar TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = 'aws.dynamodb.item_collection_metrics';\nvar TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = 'aws.dynamodb.provisioned_read_capacity';\nvar TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = 'aws.dynamodb.provisioned_write_capacity';\nvar TMP_AWS_DYNAMODB_CONSISTENT_READ = 'aws.dynamodb.consistent_read';\nvar TMP_AWS_DYNAMODB_PROJECTION = 'aws.dynamodb.projection';\nvar TMP_AWS_DYNAMODB_LIMIT = 'aws.dynamodb.limit';\nvar TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET = 'aws.dynamodb.attributes_to_get';\nvar TMP_AWS_DYNAMODB_INDEX_NAME = 'aws.dynamodb.index_name';\nvar TMP_AWS_DYNAMODB_SELECT = 'aws.dynamodb.select';\nvar TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = 'aws.dynamodb.global_secondary_indexes';\nvar TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = 'aws.dynamodb.local_secondary_indexes';\nvar TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = 'aws.dynamodb.exclusive_start_table';\nvar TMP_AWS_DYNAMODB_TABLE_COUNT = 'aws.dynamodb.table_count';\nvar TMP_AWS_DYNAMODB_SCAN_FORWARD = 'aws.dynamodb.scan_forward';\nvar TMP_AWS_DYNAMODB_SEGMENT = 'aws.dynamodb.segment';\nvar TMP_AWS_DYNAMODB_TOTAL_SEGMENTS = 'aws.dynamodb.total_segments';\nvar TMP_AWS_DYNAMODB_COUNT = 'aws.dynamodb.count';\nvar TMP_AWS_DYNAMODB_SCANNED_COUNT = 'aws.dynamodb.scanned_count';\nvar TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = 'aws.dynamodb.attribute_definitions';\nvar TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = 'aws.dynamodb.global_secondary_index_updates';\nvar TMP_MESSAGING_SYSTEM = 'messaging.system';\nvar TMP_MESSAGING_DESTINATION = 'messaging.destination';\nvar TMP_MESSAGING_DESTINATION_KIND = 'messaging.destination_kind';\nvar TMP_MESSAGING_TEMP_DESTINATION = 'messaging.temp_destination';\nvar TMP_MESSAGING_PROTOCOL = 'messaging.protocol';\nvar TMP_MESSAGING_PROTOCOL_VERSION = 'messaging.protocol_version';\nvar TMP_MESSAGING_URL = 'messaging.url';\nvar TMP_MESSAGING_MESSAGE_ID = 'messaging.message_id';\nvar TMP_MESSAGING_CONVERSATION_ID = 'messaging.conversation_id';\nvar TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = 'messaging.message_payload_size_bytes';\nvar TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = 'messaging.message_payload_compressed_size_bytes';\nvar TMP_MESSAGING_OPERATION = 'messaging.operation';\nvar TMP_MESSAGING_CONSUMER_ID = 'messaging.consumer_id';\nvar TMP_MESSAGING_RABBITMQ_ROUTING_KEY = 'messaging.rabbitmq.routing_key';\nvar TMP_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message_key';\nvar TMP_MESSAGING_KAFKA_CONSUMER_GROUP = 'messaging.kafka.consumer_group';\nvar TMP_MESSAGING_KAFKA_CLIENT_ID = 'messaging.kafka.client_id';\nvar TMP_MESSAGING_KAFKA_PARTITION = 'messaging.kafka.partition';\nvar TMP_MESSAGING_KAFKA_TOMBSTONE = 'messaging.kafka.tombstone';\nvar TMP_RPC_SYSTEM = 'rpc.system';\nvar TMP_RPC_SERVICE = 'rpc.service';\nvar TMP_RPC_METHOD = 'rpc.method';\nvar TMP_RPC_GRPC_STATUS_CODE = 'rpc.grpc.status_code';\nvar TMP_RPC_JSONRPC_VERSION = 'rpc.jsonrpc.version';\nvar TMP_RPC_JSONRPC_REQUEST_ID = 'rpc.jsonrpc.request_id';\nvar TMP_RPC_JSONRPC_ERROR_CODE = 'rpc.jsonrpc.error_code';\nvar TMP_RPC_JSONRPC_ERROR_MESSAGE = 'rpc.jsonrpc.error_message';\nvar TMP_MESSAGE_TYPE = 'message.type';\nvar TMP_MESSAGE_ID = 'message.id';\nvar TMP_MESSAGE_COMPRESSED_SIZE = 'message.compressed_size';\nvar TMP_MESSAGE_UNCOMPRESSED_SIZE = 'message.uncompressed_size';\n/**\n * The full invoked ARN as provided on the `Context` passed to the function (`Lambda-Runtime-Invoked-Function-Arn` header on the `/runtime/invocation/next` applicable).\n *\n * Note: This may be different from `faas.id` if an alias is involved.\n *\n * @deprecated Use ATTR_AWS_LAMBDA_INVOKED_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_LAMBDA_INVOKED_ARN = TMP_AWS_LAMBDA_INVOKED_ARN;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use ATTR_DB_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_SYSTEM = TMP_DB_SYSTEM;\n/**\n * The connection string used to connect to the database. It is recommended to remove embedded credentials.\n *\n * @deprecated Use ATTR_DB_CONNECTION_STRING in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CONNECTION_STRING = TMP_DB_CONNECTION_STRING;\n/**\n * Username for accessing the database.\n *\n * @deprecated Use ATTR_DB_USER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_USER = TMP_DB_USER;\n/**\n * The fully-qualified class name of the [Java Database Connectivity (JDBC)](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) driver used to connect.\n *\n * @deprecated Use ATTR_DB_JDBC_DRIVER_CLASSNAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_JDBC_DRIVER_CLASSNAME = TMP_DB_JDBC_DRIVER_CLASSNAME;\n/**\n * If no [tech-specific attribute](#call-level-attributes-for-specific-technologies) is defined, this attribute is used to report the name of the database being accessed. For commands that switch the database, this should be set to the target database (even if the command fails).\n *\n * Note: In some SQL databases, the database name to be used is called &#34;schema name&#34;.\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_NAME = TMP_DB_NAME;\n/**\n * The database statement being executed.\n *\n * Note: The value may be sanitized to exclude sensitive information.\n *\n * @deprecated Use ATTR_DB_STATEMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_STATEMENT = TMP_DB_STATEMENT;\n/**\n * The name of the operation being executed, e.g. the [MongoDB command name](https://docs.mongodb.com/manual/reference/command/#database-operations) such as `findAndModify`, or the SQL keyword.\n *\n * Note: When setting this to an SQL keyword, it is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if the operation name is provided by the library being instrumented. If the SQL statement has an ambiguous operation, or performs more than one operation, this value may be omitted.\n *\n * @deprecated Use ATTR_DB_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_OPERATION = TMP_DB_OPERATION;\n/**\n * The Microsoft SQL Server [instance name](https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=sql-server-ver15) connecting to. This name is used to determine the port of a named instance.\n *\n * Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer required (but still recommended if non-standard).\n *\n * @deprecated Use ATTR_DB_MSSQL_INSTANCE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_MSSQL_INSTANCE_NAME = TMP_DB_MSSQL_INSTANCE_NAME;\n/**\n * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_KEYSPACE = TMP_DB_CASSANDRA_KEYSPACE;\n/**\n * The fetch size used for paging, i.e. how many rows will be returned at once.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_PAGE_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_PAGE_SIZE = TMP_DB_CASSANDRA_PAGE_SIZE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL = TMP_DB_CASSANDRA_CONSISTENCY_LEVEL;\n/**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: This mirrors the db.sql.table attribute but references cassandra rather than sql. It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_TABLE = TMP_DB_CASSANDRA_TABLE;\n/**\n * Whether or not the query is idempotent.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_IDEMPOTENCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_IDEMPOTENCE = TMP_DB_CASSANDRA_IDEMPOTENCE;\n/**\n * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT;\n/**\n * The ID of the coordinating node for a query.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_COORDINATOR_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_COORDINATOR_ID = TMP_DB_CASSANDRA_COORDINATOR_ID;\n/**\n * The data center of the coordinating node for a query.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_COORDINATOR_DC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_COORDINATOR_DC = TMP_DB_CASSANDRA_COORDINATOR_DC;\n/**\n * The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being accessed. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_HBASE_NAMESPACE = TMP_DB_HBASE_NAMESPACE;\n/**\n * The index of the database being accessed as used in the [`SELECT` command](https://redis.io/commands/select), provided as an integer. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_REDIS_DATABASE_INDEX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_REDIS_DATABASE_INDEX = TMP_DB_REDIS_DATABASE_INDEX;\n/**\n * The collection being accessed within the database stated in `db.name`.\n *\n * @deprecated Use ATTR_DB_MONGODB_COLLECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_MONGODB_COLLECTION = TMP_DB_MONGODB_COLLECTION;\n/**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n *\n * @deprecated Use ATTR_DB_SQL_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_SQL_TABLE = TMP_DB_SQL_TABLE;\n/**\n * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n *\n * @deprecated Use ATTR_EXCEPTION_TYPE.\n */\nexport var SEMATTRS_EXCEPTION_TYPE = TMP_EXCEPTION_TYPE;\n/**\n * The exception message.\n *\n * @deprecated Use ATTR_EXCEPTION_MESSAGE.\n */\nexport var SEMATTRS_EXCEPTION_MESSAGE = TMP_EXCEPTION_MESSAGE;\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n *\n * @deprecated Use ATTR_EXCEPTION_STACKTRACE.\n */\nexport var SEMATTRS_EXCEPTION_STACKTRACE = TMP_EXCEPTION_STACKTRACE;\n/**\n* SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.\n*\n* Note: An exception is considered to have escaped (or left) the scope of a span,\nif that span is ended while the exception is still logically &#34;in flight&#34;.\nThis may be actually &#34;in flight&#34; in some languages (e.g. if the exception\nis passed to a Context manager&#39;s `__exit__` method in Python) but will\nusually be caught at the point of recording the exception in most languages.\n\nIt is usually not possible to determine at the point where an exception is thrown\nwhether it will escape the scope of a span.\nHowever, it is trivial to know that an exception\nwill escape, if one checks for an active exception just before ending the span,\nas done in the [example above](#exception-end-example).\n\nIt follows that an exception may still escape the scope of the span\neven if the `exception.escaped` attribute was not set or set to false,\nsince the event might have been recorded at a time where it was not\nclear whether the exception will escape.\n*\n* @deprecated Use ATTR_EXCEPTION_ESCAPED.\n*/\nexport var SEMATTRS_EXCEPTION_ESCAPED = TMP_EXCEPTION_ESCAPED;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use ATTR_FAAS_TRIGGER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_TRIGGER = TMP_FAAS_TRIGGER;\n/**\n * The execution ID of the current function execution.\n *\n * @deprecated Use ATTR_FAAS_INVOCATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_EXECUTION = TMP_FAAS_EXECUTION;\n/**\n * The name of the source on which the triggering operation was performed. For example, in Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database name.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_COLLECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_DOCUMENT_COLLECTION = TMP_FAAS_DOCUMENT_COLLECTION;\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_DOCUMENT_OPERATION = TMP_FAAS_DOCUMENT_OPERATION;\n/**\n * A string containing the time when the data was accessed in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_TIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_DOCUMENT_TIME = TMP_FAAS_DOCUMENT_TIME;\n/**\n * The document name/table subjected to the operation. For example, in Cloud Storage or S3 is the name of the file, and in Cosmos DB the table name.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_DOCUMENT_NAME = TMP_FAAS_DOCUMENT_NAME;\n/**\n * A string containing the function invocation time in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n *\n * @deprecated Use ATTR_FAAS_TIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_TIME = TMP_FAAS_TIME;\n/**\n * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm).\n *\n * @deprecated Use ATTR_FAAS_CRON in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_CRON = TMP_FAAS_CRON;\n/**\n * A boolean that is true if the serverless function is executed for the first time (aka cold-start).\n *\n * @deprecated Use ATTR_FAAS_COLDSTART in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_COLDSTART = TMP_FAAS_COLDSTART;\n/**\n * The name of the invoked function.\n *\n * Note: SHOULD be equal to the `faas.name` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_INVOKED_NAME = TMP_FAAS_INVOKED_NAME;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_PROVIDER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_INVOKED_PROVIDER = TMP_FAAS_INVOKED_PROVIDER;\n/**\n * The cloud region of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_REGION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_INVOKED_REGION = TMP_FAAS_INVOKED_REGION;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use ATTR_NET_TRANSPORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_TRANSPORT = TMP_NET_TRANSPORT;\n/**\n * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6).\n *\n * @deprecated Use ATTR_NET_PEER_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_PEER_IP = TMP_NET_PEER_IP;\n/**\n * Remote port number.\n *\n * @deprecated Use ATTR_NET_PEER_PORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_PEER_PORT = TMP_NET_PEER_PORT;\n/**\n * Remote hostname or similar, see note below.\n *\n * @deprecated Use ATTR_NET_PEER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_PEER_NAME = TMP_NET_PEER_NAME;\n/**\n * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.\n *\n * @deprecated Use ATTR_NET_HOST_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_IP = TMP_NET_HOST_IP;\n/**\n * Like `net.peer.port` but for the host port.\n *\n * @deprecated Use ATTR_NET_HOST_PORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_PORT = TMP_NET_HOST_PORT;\n/**\n * Local hostname or similar, see note below.\n *\n * @deprecated Use ATTR_NET_HOST_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_NAME = TMP_NET_HOST_NAME;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use ATTR_NETWORK_CONNECTION_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_CONNECTION_TYPE = TMP_NET_HOST_CONNECTION_TYPE;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use ATTR_NETWORK_CONNECTION_SUBTYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_CONNECTION_SUBTYPE = TMP_NET_HOST_CONNECTION_SUBTYPE;\n/**\n * The name of the mobile carrier.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_CARRIER_NAME = TMP_NET_HOST_CARRIER_NAME;\n/**\n * The mobile carrier country code.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_MCC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_CARRIER_MCC = TMP_NET_HOST_CARRIER_MCC;\n/**\n * The mobile carrier network code.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_MNC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_CARRIER_MNC = TMP_NET_HOST_CARRIER_MNC;\n/**\n * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_ICC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_CARRIER_ICC = TMP_NET_HOST_CARRIER_ICC;\n/**\n * The [`service.name`](../../resource/semantic_conventions/README.md#service) of the remote service. SHOULD be equal to the actual `service.name` resource attribute of the remote service if any.\n *\n * @deprecated Use ATTR_PEER_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_PEER_SERVICE = TMP_PEER_SERVICE;\n/**\n * Username or client_id extracted from the access token or [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) header in the inbound request from outside the system.\n *\n * @deprecated Use ATTR_ENDUSER_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_ENDUSER_ID = TMP_ENDUSER_ID;\n/**\n * Actual/assumed role the client is making the request under extracted from token or application security context.\n *\n * @deprecated Use ATTR_ENDUSER_ROLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_ENDUSER_ROLE = TMP_ENDUSER_ROLE;\n/**\n * Scopes or granted authorities the client currently possesses extracted from token or application security context. The value would come from the scope associated with an [OAuth 2.0 Access Token](https://tools.ietf.org/html/rfc6749#section-3.3) or an attribute value in a [SAML 2.0 Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html).\n *\n * @deprecated Use ATTR_ENDUSER_SCOPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_ENDUSER_SCOPE = TMP_ENDUSER_SCOPE;\n/**\n * Current &#34;managed&#34; thread ID (as opposed to OS thread ID).\n *\n * @deprecated Use ATTR_THREAD_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_THREAD_ID = TMP_THREAD_ID;\n/**\n * Current thread name.\n *\n * @deprecated Use ATTR_THREAD_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_THREAD_NAME = TMP_THREAD_NAME;\n/**\n * The method or function name, or equivalent (usually rightmost part of the code unit&#39;s name).\n *\n * @deprecated Use ATTR_CODE_FUNCTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_CODE_FUNCTION = TMP_CODE_FUNCTION;\n/**\n * The &#34;namespace&#34; within which `code.function` is defined. Usually the qualified class or module name, such that `code.namespace` + some separator + `code.function` form a unique identifier for the code unit.\n *\n * @deprecated Use ATTR_CODE_NAMESPACE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_CODE_NAMESPACE = TMP_CODE_NAMESPACE;\n/**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).\n *\n * @deprecated Use ATTR_CODE_FILEPATH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_CODE_FILEPATH = TMP_CODE_FILEPATH;\n/**\n * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`.\n *\n * @deprecated Use ATTR_CODE_LINENO in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_CODE_LINENO = TMP_CODE_LINENO;\n/**\n * HTTP request method.\n *\n * @deprecated Use ATTR_HTTP_METHOD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_METHOD = TMP_HTTP_METHOD;\n/**\n * Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`. Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.\n *\n * Note: `http.url` MUST NOT contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case the attribute&#39;s value should be `https://www.example.com/`.\n *\n * @deprecated Use ATTR_HTTP_URL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_URL = TMP_HTTP_URL;\n/**\n * The full request target as passed in a HTTP request line or equivalent.\n *\n * @deprecated Use ATTR_HTTP_TARGET in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_TARGET = TMP_HTTP_TARGET;\n/**\n * The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4). An empty Host header should also be reported, see note.\n *\n * Note: When the header is present but empty the attribute SHOULD be set to the empty string. Note that this is a valid situation that is expected in certain cases, according the aforementioned [section of RFC 7230](https://tools.ietf.org/html/rfc7230#section-5.4). When the header is not set the attribute MUST NOT be set.\n *\n * @deprecated Use ATTR_HTTP_HOST in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_HOST = TMP_HTTP_HOST;\n/**\n * The URI scheme identifying the used protocol.\n *\n * @deprecated Use ATTR_HTTP_SCHEME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_SCHEME = TMP_HTTP_SCHEME;\n/**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n *\n * @deprecated Use ATTR_HTTP_STATUS_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_STATUS_CODE = TMP_HTTP_STATUS_CODE;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use ATTR_HTTP_FLAVOR in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_FLAVOR = TMP_HTTP_FLAVOR;\n/**\n * Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.\n *\n * @deprecated Use ATTR_HTTP_USER_AGENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_USER_AGENT = TMP_HTTP_USER_AGENT;\n/**\n * The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n *\n * @deprecated Use ATTR_HTTP_REQUEST_CONTENT_LENGTH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH = TMP_HTTP_REQUEST_CONTENT_LENGTH;\n/**\n * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used.\n *\n * @deprecated Use ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED;\n/**\n * The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n *\n * @deprecated Use ATTR_HTTP_RESPONSE_CONTENT_LENGTH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH = TMP_HTTP_RESPONSE_CONTENT_LENGTH;\n/**\n * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used.\n *\n * @deprecated Use ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED;\n/**\n * The primary server name of the matched virtual host. This should be obtained via configuration. If no such configuration can be obtained, this attribute MUST NOT be set ( `net.host.name` should be used instead).\n *\n * Note: `http.url` is usually not readily available on the server side but would have to be assembled in a cumbersome and sometimes lossy process from other information (see e.g. open-telemetry/opentelemetry-python/pull/148). It is thus preferred to supply the raw data that is available.\n *\n * @deprecated Use ATTR_HTTP_SERVER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_SERVER_NAME = TMP_HTTP_SERVER_NAME;\n/**\n * The matched route (path template).\n *\n * @deprecated Use ATTR_HTTP_ROUTE.\n */\nexport var SEMATTRS_HTTP_ROUTE = TMP_HTTP_ROUTE;\n/**\n* The IP address of the original client behind all proxies, if known (e.g. from [X-Forwarded-For](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For)).\n*\n* Note: This is not necessarily the same as `net.peer.ip`, which would\nidentify the network-level peer, which may be a proxy.\n\nThis attribute should be set when a source of information different\nfrom the one used for `net.peer.ip`, is available even if that other\nsource just confirms the same value as `net.peer.ip`.\nRationale: For `net.peer.ip`, one typically does not know if it\ncomes from a proxy, reverse proxy, or the actual client. Setting\n`http.client_ip` when it&#39;s the same as `net.peer.ip` means that\none is at least somewhat confident that the address is not that of\nthe closest proxy.\n*\n* @deprecated Use ATTR_HTTP_CLIENT_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexport var SEMATTRS_HTTP_CLIENT_IP = TMP_HTTP_CLIENT_IP;\n/**\n * The keys in the `RequestItems` object field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TABLE_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_TABLE_NAMES = TMP_AWS_DYNAMODB_TABLE_NAMES;\n/**\n * The JSON-serialized value of each item in the `ConsumedCapacity` response field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_CONSUMED_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY = TMP_AWS_DYNAMODB_CONSUMED_CAPACITY;\n/**\n * The JSON-serialized value of the `ItemCollectionMetrics` response field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ITEM_COLLECTION_METRICS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS;\n/**\n * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY;\n/**\n * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY;\n/**\n * The value of the `ConsistentRead` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_CONSISTENT_READ in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ = TMP_AWS_DYNAMODB_CONSISTENT_READ;\n/**\n * The value of the `ProjectionExpression` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROJECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_PROJECTION = TMP_AWS_DYNAMODB_PROJECTION;\n/**\n * The value of the `Limit` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_LIMIT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_LIMIT = TMP_AWS_DYNAMODB_LIMIT;\n/**\n * The value of the `AttributesToGet` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ATTRIBUTES_TO_GET in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET = TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET;\n/**\n * The value of the `IndexName` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_INDEX_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_INDEX_NAME = TMP_AWS_DYNAMODB_INDEX_NAME;\n/**\n * The value of the `Select` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SELECT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_SELECT = TMP_AWS_DYNAMODB_SELECT;\n/**\n * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES;\n/**\n * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES;\n/**\n * The value of the `ExclusiveStartTableName` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_EXCLUSIVE_START_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE;\n/**\n * The the number of items in the `TableNames` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TABLE_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_TABLE_COUNT = TMP_AWS_DYNAMODB_TABLE_COUNT;\n/**\n * The value of the `ScanIndexForward` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SCAN_FORWARD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD = TMP_AWS_DYNAMODB_SCAN_FORWARD;\n/**\n * The value of the `Segment` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SEGMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_SEGMENT = TMP_AWS_DYNAMODB_SEGMENT;\n/**\n * The value of the `TotalSegments` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TOTAL_SEGMENTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS = TMP_AWS_DYNAMODB_TOTAL_SEGMENTS;\n/**\n * The value of the `Count` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_COUNT = TMP_AWS_DYNAMODB_COUNT;\n/**\n * The value of the `ScannedCount` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SCANNED_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT = TMP_AWS_DYNAMODB_SCANNED_COUNT;\n/**\n * The JSON-serialized value of each item in the `AttributeDefinitions` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS;\n/**\n * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES;\n/**\n * A string identifying the messaging system.\n *\n * @deprecated Use ATTR_MESSAGING_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_SYSTEM = TMP_MESSAGING_SYSTEM;\n/**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_DESTINATION = TMP_MESSAGING_DESTINATION;\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport var SEMATTRS_MESSAGING_DESTINATION_KIND = TMP_MESSAGING_DESTINATION_KIND;\n/**\n * A boolean that is true if the message destination is temporary.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_TEMPORARY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_TEMP_DESTINATION = TMP_MESSAGING_TEMP_DESTINATION;\n/**\n * The name of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME.\n */\nexport var SEMATTRS_MESSAGING_PROTOCOL = TMP_MESSAGING_PROTOCOL;\n/**\n * The version of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION.\n */\nexport var SEMATTRS_MESSAGING_PROTOCOL_VERSION = TMP_MESSAGING_PROTOCOL_VERSION;\n/**\n * Connection string.\n *\n * @deprecated Removed in semconv v1.17.0.\n */\nexport var SEMATTRS_MESSAGING_URL = TMP_MESSAGING_URL;\n/**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_MESSAGE_ID = TMP_MESSAGING_MESSAGE_ID;\n/**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called &#34;Correlation ID&#34;.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_CONVERSATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_CONVERSATION_ID = TMP_MESSAGING_CONVERSATION_ID;\n/**\n * The (uncompressed) size of the message payload in bytes. Also use this attribute if it is unknown whether the compressed or uncompressed payload size is reported.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_BODY_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES;\n/**\n * The compressed size of the message payload in bytes.\n *\n * @deprecated Removed in semconv v1.22.0.\n */\nexport var SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES;\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is &#34;send&#34;, this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use ATTR_MESSAGING_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_OPERATION = TMP_MESSAGING_OPERATION;\n/**\n * The identifier for the consumer receiving a message. For Kafka, set it to `{messaging.kafka.consumer_group} - {messaging.kafka.client_id}`, if both are present, or only `messaging.kafka.consumer_group`. For brokers, such as RabbitMQ and Artemis, set it to the `client_id` of the client consuming the message.\n *\n * @deprecated Removed in semconv v1.21.0.\n */\nexport var SEMATTRS_MESSAGING_CONSUMER_ID = TMP_MESSAGING_CONSUMER_ID;\n/**\n * RabbitMQ message routing key.\n *\n * @deprecated Use ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY = TMP_MESSAGING_RABBITMQ_ROUTING_KEY;\n/**\n * Message keys in Kafka are used for grouping alike messages to ensure they&#39;re processed on the same partition. They differ from `messaging.message_id` in that they&#39;re not unique. If the key is `null`, the attribute MUST NOT be set.\n *\n * Note: If the key type is not string, it&#39;s string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don&#39;t include its value.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_MESSAGE_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY = TMP_MESSAGING_KAFKA_MESSAGE_KEY;\n/**\n * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_CONSUMER_GROUP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP = TMP_MESSAGING_KAFKA_CONSUMER_GROUP;\n/**\n * Client Id for the Consumer or Producer that is handling the message.\n *\n * @deprecated Use ATTR_MESSAGING_CLIENT_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_KAFKA_CLIENT_ID = TMP_MESSAGING_KAFKA_CLIENT_ID;\n/**\n * Partition the message is sent to.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_DESTINATION_PARTITION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_KAFKA_PARTITION = TMP_MESSAGING_KAFKA_PARTITION;\n/**\n * A boolean that is true if the message is a tombstone.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_KAFKA_TOMBSTONE = TMP_MESSAGING_KAFKA_TOMBSTONE;\n/**\n * A string identifying the remoting system.\n *\n * @deprecated Use ATTR_RPC_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_SYSTEM = TMP_RPC_SYSTEM;\n/**\n * The full (logical) name of the service being called, including its package name, if applicable.\n *\n * Note: This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.namespace` attribute may be used to store the latter (despite the attribute name, it may include a class name; e.g., class with method actually executing the call on the server side, RPC client stub class on the client side).\n *\n * @deprecated Use ATTR_RPC_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_SERVICE = TMP_RPC_SERVICE;\n/**\n * The name of the (logical) method being called, must be equal to the $method part in the span name.\n *\n * Note: This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function` attribute may be used to store the latter (e.g., method actually executing the call on the server side, RPC client stub method on the client side).\n *\n * @deprecated Use ATTR_RPC_METHOD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_METHOD = TMP_RPC_METHOD;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use ATTR_RPC_GRPC_STATUS_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_GRPC_STATUS_CODE = TMP_RPC_GRPC_STATUS_CODE;\n/**\n * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_JSONRPC_VERSION = TMP_RPC_JSONRPC_VERSION;\n/**\n * `id` property of request or response. Since protocol allows id to be int, string, `null` or missing (for notifications), value is expected to be cast to string for simplicity. Use empty string in case of `null` value. Omit entirely if this is a notification.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_REQUEST_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_JSONRPC_REQUEST_ID = TMP_RPC_JSONRPC_REQUEST_ID;\n/**\n * `error.code` property of response if it is an error response.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_ERROR_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_JSONRPC_ERROR_CODE = TMP_RPC_JSONRPC_ERROR_CODE;\n/**\n * `error.message` property of response if it is an error response.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_ERROR_MESSAGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE = TMP_RPC_JSONRPC_ERROR_MESSAGE;\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use ATTR_MESSAGE_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGE_TYPE = TMP_MESSAGE_TYPE;\n/**\n * MUST be calculated as two different counters starting from `1` one for sent messages and one for received message.\n *\n * Note: This way we guarantee that the values will be consistent between different implementations.\n *\n * @deprecated Use ATTR_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGE_ID = TMP_MESSAGE_ID;\n/**\n * Compressed size of the message in bytes.\n *\n * @deprecated Use ATTR_MESSAGE_COMPRESSED_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGE_COMPRESSED_SIZE = TMP_MESSAGE_COMPRESSED_SIZE;\n/**\n * Uncompressed size of the message in bytes.\n *\n * @deprecated Use ATTR_MESSAGE_UNCOMPRESSED_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE = TMP_MESSAGE_UNCOMPRESSED_SIZE;\n/**\n * Create exported Value Map for SemanticAttributes values\n * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification\n */\nexport var SemanticAttributes = \n/*#__PURE__*/ createConstMap([\n    TMP_AWS_LAMBDA_INVOKED_ARN,\n    TMP_DB_SYSTEM,\n    TMP_DB_CONNECTION_STRING,\n    TMP_DB_USER,\n    TMP_DB_JDBC_DRIVER_CLASSNAME,\n    TMP_DB_NAME,\n    TMP_DB_STATEMENT,\n    TMP_DB_OPERATION,\n    TMP_DB_MSSQL_INSTANCE_NAME,\n    TMP_DB_CASSANDRA_KEYSPACE,\n    TMP_DB_CASSANDRA_PAGE_SIZE,\n    TMP_DB_CASSANDRA_CONSISTENCY_LEVEL,\n    TMP_DB_CASSANDRA_TABLE,\n    TMP_DB_CASSANDRA_IDEMPOTENCE,\n    TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT,\n    TMP_DB_CASSANDRA_COORDINATOR_ID,\n    TMP_DB_CASSANDRA_COORDINATOR_DC,\n    TMP_DB_HBASE_NAMESPACE,\n    TMP_DB_REDIS_DATABASE_INDEX,\n    TMP_DB_MONGODB_COLLECTION,\n    TMP_DB_SQL_TABLE,\n    TMP_EXCEPTION_TYPE,\n    TMP_EXCEPTION_MESSAGE,\n    TMP_EXCEPTION_STACKTRACE,\n    TMP_EXCEPTION_ESCAPED,\n    TMP_FAAS_TRIGGER,\n    TMP_FAAS_EXECUTION,\n    TMP_FAAS_DOCUMENT_COLLECTION,\n    TMP_FAAS_DOCUMENT_OPERATION,\n    TMP_FAAS_DOCUMENT_TIME,\n    TMP_FAAS_DOCUMENT_NAME,\n    TMP_FAAS_TIME,\n    TMP_FAAS_CRON,\n    TMP_FAAS_COLDSTART,\n    TMP_FAAS_INVOKED_NAME,\n    TMP_FAAS_INVOKED_PROVIDER,\n    TMP_FAAS_INVOKED_REGION,\n    TMP_NET_TRANSPORT,\n    TMP_NET_PEER_IP,\n    TMP_NET_PEER_PORT,\n    TMP_NET_PEER_NAME,\n    TMP_NET_HOST_IP,\n    TMP_NET_HOST_PORT,\n    TMP_NET_HOST_NAME,\n    TMP_NET_HOST_CONNECTION_TYPE,\n    TMP_NET_HOST_CONNECTION_SUBTYPE,\n    TMP_NET_HOST_CARRIER_NAME,\n    TMP_NET_HOST_CARRIER_MCC,\n    TMP_NET_HOST_CARRIER_MNC,\n    TMP_NET_HOST_CARRIER_ICC,\n    TMP_PEER_SERVICE,\n    TMP_ENDUSER_ID,\n    TMP_ENDUSER_ROLE,\n    TMP_ENDUSER_SCOPE,\n    TMP_THREAD_ID,\n    TMP_THREAD_NAME,\n    TMP_CODE_FUNCTION,\n    TMP_CODE_NAMESPACE,\n    TMP_CODE_FILEPATH,\n    TMP_CODE_LINENO,\n    TMP_HTTP_METHOD,\n    TMP_HTTP_URL,\n    TMP_HTTP_TARGET,\n    TMP_HTTP_HOST,\n    TMP_HTTP_SCHEME,\n    TMP_HTTP_STATUS_CODE,\n    TMP_HTTP_FLAVOR,\n    TMP_HTTP_USER_AGENT,\n    TMP_HTTP_REQUEST_CONTENT_LENGTH,\n    TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED,\n    TMP_HTTP_RESPONSE_CONTENT_LENGTH,\n    TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED,\n    TMP_HTTP_SERVER_NAME,\n    TMP_HTTP_ROUTE,\n    TMP_HTTP_CLIENT_IP,\n    TMP_AWS_DYNAMODB_TABLE_NAMES,\n    TMP_AWS_DYNAMODB_CONSUMED_CAPACITY,\n    TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS,\n    TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY,\n    TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY,\n    TMP_AWS_DYNAMODB_CONSISTENT_READ,\n    TMP_AWS_DYNAMODB_PROJECTION,\n    TMP_AWS_DYNAMODB_LIMIT,\n    TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET,\n    TMP_AWS_DYNAMODB_INDEX_NAME,\n    TMP_AWS_DYNAMODB_SELECT,\n    TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES,\n    TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES,\n    TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE,\n    TMP_AWS_DYNAMODB_TABLE_COUNT,\n    TMP_AWS_DYNAMODB_SCAN_FORWARD,\n    TMP_AWS_DYNAMODB_SEGMENT,\n    TMP_AWS_DYNAMODB_TOTAL_SEGMENTS,\n    TMP_AWS_DYNAMODB_COUNT,\n    TMP_AWS_DYNAMODB_SCANNED_COUNT,\n    TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS,\n    TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES,\n    TMP_MESSAGING_SYSTEM,\n    TMP_MESSAGING_DESTINATION,\n    TMP_MESSAGING_DESTINATION_KIND,\n    TMP_MESSAGING_TEMP_DESTINATION,\n    TMP_MESSAGING_PROTOCOL,\n    TMP_MESSAGING_PROTOCOL_VERSION,\n    TMP_MESSAGING_URL,\n    TMP_MESSAGING_MESSAGE_ID,\n    TMP_MESSAGING_CONVERSATION_ID,\n    TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES,\n    TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES,\n    TMP_MESSAGING_OPERATION,\n    TMP_MESSAGING_CONSUMER_ID,\n    TMP_MESSAGING_RABBITMQ_ROUTING_KEY,\n    TMP_MESSAGING_KAFKA_MESSAGE_KEY,\n    TMP_MESSAGING_KAFKA_CONSUMER_GROUP,\n    TMP_MESSAGING_KAFKA_CLIENT_ID,\n    TMP_MESSAGING_KAFKA_PARTITION,\n    TMP_MESSAGING_KAFKA_TOMBSTONE,\n    TMP_RPC_SYSTEM,\n    TMP_RPC_SERVICE,\n    TMP_RPC_METHOD,\n    TMP_RPC_GRPC_STATUS_CODE,\n    TMP_RPC_JSONRPC_VERSION,\n    TMP_RPC_JSONRPC_REQUEST_ID,\n    TMP_RPC_JSONRPC_ERROR_CODE,\n    TMP_RPC_JSONRPC_ERROR_MESSAGE,\n    TMP_MESSAGE_TYPE,\n    TMP_MESSAGE_ID,\n    TMP_MESSAGE_COMPRESSED_SIZE,\n    TMP_MESSAGE_UNCOMPRESSED_SIZE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for DbSystemValues enum definition\n *\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_DBSYSTEMVALUES_OTHER_SQL = 'other_sql';\nvar TMP_DBSYSTEMVALUES_MSSQL = 'mssql';\nvar TMP_DBSYSTEMVALUES_MYSQL = 'mysql';\nvar TMP_DBSYSTEMVALUES_ORACLE = 'oracle';\nvar TMP_DBSYSTEMVALUES_DB2 = 'db2';\nvar TMP_DBSYSTEMVALUES_POSTGRESQL = 'postgresql';\nvar TMP_DBSYSTEMVALUES_REDSHIFT = 'redshift';\nvar TMP_DBSYSTEMVALUES_HIVE = 'hive';\nvar TMP_DBSYSTEMVALUES_CLOUDSCAPE = 'cloudscape';\nvar TMP_DBSYSTEMVALUES_HSQLDB = 'hsqldb';\nvar TMP_DBSYSTEMVALUES_PROGRESS = 'progress';\nvar TMP_DBSYSTEMVALUES_MAXDB = 'maxdb';\nvar TMP_DBSYSTEMVALUES_HANADB = 'hanadb';\nvar TMP_DBSYSTEMVALUES_INGRES = 'ingres';\nvar TMP_DBSYSTEMVALUES_FIRSTSQL = 'firstsql';\nvar TMP_DBSYSTEMVALUES_EDB = 'edb';\nvar TMP_DBSYSTEMVALUES_CACHE = 'cache';\nvar TMP_DBSYSTEMVALUES_ADABAS = 'adabas';\nvar TMP_DBSYSTEMVALUES_FIREBIRD = 'firebird';\nvar TMP_DBSYSTEMVALUES_DERBY = 'derby';\nvar TMP_DBSYSTEMVALUES_FILEMAKER = 'filemaker';\nvar TMP_DBSYSTEMVALUES_INFORMIX = 'informix';\nvar TMP_DBSYSTEMVALUES_INSTANTDB = 'instantdb';\nvar TMP_DBSYSTEMVALUES_INTERBASE = 'interbase';\nvar TMP_DBSYSTEMVALUES_MARIADB = 'mariadb';\nvar TMP_DBSYSTEMVALUES_NETEZZA = 'netezza';\nvar TMP_DBSYSTEMVALUES_PERVASIVE = 'pervasive';\nvar TMP_DBSYSTEMVALUES_POINTBASE = 'pointbase';\nvar TMP_DBSYSTEMVALUES_SQLITE = 'sqlite';\nvar TMP_DBSYSTEMVALUES_SYBASE = 'sybase';\nvar TMP_DBSYSTEMVALUES_TERADATA = 'teradata';\nvar TMP_DBSYSTEMVALUES_VERTICA = 'vertica';\nvar TMP_DBSYSTEMVALUES_H2 = 'h2';\nvar TMP_DBSYSTEMVALUES_COLDFUSION = 'coldfusion';\nvar TMP_DBSYSTEMVALUES_CASSANDRA = 'cassandra';\nvar TMP_DBSYSTEMVALUES_HBASE = 'hbase';\nvar TMP_DBSYSTEMVALUES_MONGODB = 'mongodb';\nvar TMP_DBSYSTEMVALUES_REDIS = 'redis';\nvar TMP_DBSYSTEMVALUES_COUCHBASE = 'couchbase';\nvar TMP_DBSYSTEMVALUES_COUCHDB = 'couchdb';\nvar TMP_DBSYSTEMVALUES_COSMOSDB = 'cosmosdb';\nvar TMP_DBSYSTEMVALUES_DYNAMODB = 'dynamodb';\nvar TMP_DBSYSTEMVALUES_NEO4J = 'neo4j';\nvar TMP_DBSYSTEMVALUES_GEODE = 'geode';\nvar TMP_DBSYSTEMVALUES_ELASTICSEARCH = 'elasticsearch';\nvar TMP_DBSYSTEMVALUES_MEMCACHED = 'memcached';\nvar TMP_DBSYSTEMVALUES_COCKROACHDB = 'cockroachdb';\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_OTHER_SQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_OTHER_SQL = TMP_DBSYSTEMVALUES_OTHER_SQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MSSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_MSSQL = TMP_DBSYSTEMVALUES_MSSQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MYSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_MYSQL = TMP_DBSYSTEMVALUES_MYSQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ORACLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_ORACLE = TMP_DBSYSTEMVALUES_ORACLE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DB2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_DB2 = TMP_DBSYSTEMVALUES_DB2;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_POSTGRESQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_POSTGRESQL = TMP_DBSYSTEMVALUES_POSTGRESQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_REDSHIFT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_REDSHIFT = TMP_DBSYSTEMVALUES_REDSHIFT;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_HIVE = TMP_DBSYSTEMVALUES_HIVE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CLOUDSCAPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_CLOUDSCAPE = TMP_DBSYSTEMVALUES_CLOUDSCAPE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HSQLDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_HSQLDB = TMP_DBSYSTEMVALUES_HSQLDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_PROGRESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_PROGRESS = TMP_DBSYSTEMVALUES_PROGRESS;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MAXDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_MAXDB = TMP_DBSYSTEMVALUES_MAXDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HANADB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_HANADB = TMP_DBSYSTEMVALUES_HANADB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INGRES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_INGRES = TMP_DBSYSTEMVALUES_INGRES;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FIRSTSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_FIRSTSQL = TMP_DBSYSTEMVALUES_FIRSTSQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_EDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_EDB = TMP_DBSYSTEMVALUES_EDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CACHE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_CACHE = TMP_DBSYSTEMVALUES_CACHE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ADABAS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_ADABAS = TMP_DBSYSTEMVALUES_ADABAS;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FIREBIRD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_FIREBIRD = TMP_DBSYSTEMVALUES_FIREBIRD;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DERBY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_DERBY = TMP_DBSYSTEMVALUES_DERBY;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FILEMAKER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_FILEMAKER = TMP_DBSYSTEMVALUES_FILEMAKER;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INFORMIX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_INFORMIX = TMP_DBSYSTEMVALUES_INFORMIX;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INSTANTDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_INSTANTDB = TMP_DBSYSTEMVALUES_INSTANTDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INTERBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_INTERBASE = TMP_DBSYSTEMVALUES_INTERBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MARIADB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_MARIADB = TMP_DBSYSTEMVALUES_MARIADB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_NETEZZA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_NETEZZA = TMP_DBSYSTEMVALUES_NETEZZA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_PERVASIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_PERVASIVE = TMP_DBSYSTEMVALUES_PERVASIVE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_POINTBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_POINTBASE = TMP_DBSYSTEMVALUES_POINTBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_SQLITE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_SQLITE = TMP_DBSYSTEMVALUES_SQLITE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_SYBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_SYBASE = TMP_DBSYSTEMVALUES_SYBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_TERADATA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_TERADATA = TMP_DBSYSTEMVALUES_TERADATA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_VERTICA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_VERTICA = TMP_DBSYSTEMVALUES_VERTICA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_H2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_H2 = TMP_DBSYSTEMVALUES_H2;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COLDFUSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_COLDFUSION = TMP_DBSYSTEMVALUES_COLDFUSION;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CASSANDRA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_CASSANDRA = TMP_DBSYSTEMVALUES_CASSANDRA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_HBASE = TMP_DBSYSTEMVALUES_HBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MONGODB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_MONGODB = TMP_DBSYSTEMVALUES_MONGODB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_REDIS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_REDIS = TMP_DBSYSTEMVALUES_REDIS;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COUCHBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_COUCHBASE = TMP_DBSYSTEMVALUES_COUCHBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COUCHDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_COUCHDB = TMP_DBSYSTEMVALUES_COUCHDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COSMOSDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_COSMOSDB = TMP_DBSYSTEMVALUES_COSMOSDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DYNAMODB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_DYNAMODB = TMP_DBSYSTEMVALUES_DYNAMODB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_NEO4J in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_NEO4J = TMP_DBSYSTEMVALUES_NEO4J;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_GEODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_GEODE = TMP_DBSYSTEMVALUES_GEODE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ELASTICSEARCH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_ELASTICSEARCH = TMP_DBSYSTEMVALUES_ELASTICSEARCH;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MEMCACHED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_MEMCACHED = TMP_DBSYSTEMVALUES_MEMCACHED;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COCKROACHDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_COCKROACHDB = TMP_DBSYSTEMVALUES_COCKROACHDB;\n/**\n * The constant map of values for DbSystemValues.\n * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification.\n */\nexport var DbSystemValues = \n/*#__PURE__*/ createConstMap([\n    TMP_DBSYSTEMVALUES_OTHER_SQL,\n    TMP_DBSYSTEMVALUES_MSSQL,\n    TMP_DBSYSTEMVALUES_MYSQL,\n    TMP_DBSYSTEMVALUES_ORACLE,\n    TMP_DBSYSTEMVALUES_DB2,\n    TMP_DBSYSTEMVALUES_POSTGRESQL,\n    TMP_DBSYSTEMVALUES_REDSHIFT,\n    TMP_DBSYSTEMVALUES_HIVE,\n    TMP_DBSYSTEMVALUES_CLOUDSCAPE,\n    TMP_DBSYSTEMVALUES_HSQLDB,\n    TMP_DBSYSTEMVALUES_PROGRESS,\n    TMP_DBSYSTEMVALUES_MAXDB,\n    TMP_DBSYSTEMVALUES_HANADB,\n    TMP_DBSYSTEMVALUES_INGRES,\n    TMP_DBSYSTEMVALUES_FIRSTSQL,\n    TMP_DBSYSTEMVALUES_EDB,\n    TMP_DBSYSTEMVALUES_CACHE,\n    TMP_DBSYSTEMVALUES_ADABAS,\n    TMP_DBSYSTEMVALUES_FIREBIRD,\n    TMP_DBSYSTEMVALUES_DERBY,\n    TMP_DBSYSTEMVALUES_FILEMAKER,\n    TMP_DBSYSTEMVALUES_INFORMIX,\n    TMP_DBSYSTEMVALUES_INSTANTDB,\n    TMP_DBSYSTEMVALUES_INTERBASE,\n    TMP_DBSYSTEMVALUES_MARIADB,\n    TMP_DBSYSTEMVALUES_NETEZZA,\n    TMP_DBSYSTEMVALUES_PERVASIVE,\n    TMP_DBSYSTEMVALUES_POINTBASE,\n    TMP_DBSYSTEMVALUES_SQLITE,\n    TMP_DBSYSTEMVALUES_SYBASE,\n    TMP_DBSYSTEMVALUES_TERADATA,\n    TMP_DBSYSTEMVALUES_VERTICA,\n    TMP_DBSYSTEMVALUES_H2,\n    TMP_DBSYSTEMVALUES_COLDFUSION,\n    TMP_DBSYSTEMVALUES_CASSANDRA,\n    TMP_DBSYSTEMVALUES_HBASE,\n    TMP_DBSYSTEMVALUES_MONGODB,\n    TMP_DBSYSTEMVALUES_REDIS,\n    TMP_DBSYSTEMVALUES_COUCHBASE,\n    TMP_DBSYSTEMVALUES_COUCHDB,\n    TMP_DBSYSTEMVALUES_COSMOSDB,\n    TMP_DBSYSTEMVALUES_DYNAMODB,\n    TMP_DBSYSTEMVALUES_NEO4J,\n    TMP_DBSYSTEMVALUES_GEODE,\n    TMP_DBSYSTEMVALUES_ELASTICSEARCH,\n    TMP_DBSYSTEMVALUES_MEMCACHED,\n    TMP_DBSYSTEMVALUES_COCKROACHDB,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for DbCassandraConsistencyLevelValues enum definition\n *\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL = 'all';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = 'each_quorum';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = 'quorum';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = 'local_quorum';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE = 'one';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO = 'two';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE = 'three';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = 'local_one';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY = 'any';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = 'serial';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = 'local_serial';\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_ALL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_ONE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_TWO = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_THREE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_ANY = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL;\n/**\n * The constant map of values for DbCassandraConsistencyLevelValues.\n * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification.\n */\nexport var DbCassandraConsistencyLevelValues = \n/*#__PURE__*/ createConstMap([\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasTriggerValues enum definition\n *\n * Type of the trigger on which the function is executed.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_FAASTRIGGERVALUES_DATASOURCE = 'datasource';\nvar TMP_FAASTRIGGERVALUES_HTTP = 'http';\nvar TMP_FAASTRIGGERVALUES_PUBSUB = 'pubsub';\nvar TMP_FAASTRIGGERVALUES_TIMER = 'timer';\nvar TMP_FAASTRIGGERVALUES_OTHER = 'other';\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_DATASOURCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASTRIGGERVALUES_DATASOURCE = TMP_FAASTRIGGERVALUES_DATASOURCE;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_HTTP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASTRIGGERVALUES_HTTP = TMP_FAASTRIGGERVALUES_HTTP;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_PUBSUB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASTRIGGERVALUES_PUBSUB = TMP_FAASTRIGGERVALUES_PUBSUB;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_TIMER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASTRIGGERVALUES_TIMER = TMP_FAASTRIGGERVALUES_TIMER;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_OTHER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASTRIGGERVALUES_OTHER = TMP_FAASTRIGGERVALUES_OTHER;\n/**\n * The constant map of values for FaasTriggerValues.\n * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification.\n */\nexport var FaasTriggerValues = \n/*#__PURE__*/ createConstMap([\n    TMP_FAASTRIGGERVALUES_DATASOURCE,\n    TMP_FAASTRIGGERVALUES_HTTP,\n    TMP_FAASTRIGGERVALUES_PUBSUB,\n    TMP_FAASTRIGGERVALUES_TIMER,\n    TMP_FAASTRIGGERVALUES_OTHER,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasDocumentOperationValues enum definition\n *\n * Describes the type of the operation that was performed on the data.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_FAASDOCUMENTOPERATIONVALUES_INSERT = 'insert';\nvar TMP_FAASDOCUMENTOPERATIONVALUES_EDIT = 'edit';\nvar TMP_FAASDOCUMENTOPERATIONVALUES_DELETE = 'delete';\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_INSERT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASDOCUMENTOPERATIONVALUES_INSERT = TMP_FAASDOCUMENTOPERATIONVALUES_INSERT;\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_EDIT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASDOCUMENTOPERATIONVALUES_EDIT = TMP_FAASDOCUMENTOPERATIONVALUES_EDIT;\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_DELETE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASDOCUMENTOPERATIONVALUES_DELETE = TMP_FAASDOCUMENTOPERATIONVALUES_DELETE;\n/**\n * The constant map of values for FaasDocumentOperationValues.\n * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification.\n */\nexport var FaasDocumentOperationValues = \n/*#__PURE__*/ createConstMap([\n    TMP_FAASDOCUMENTOPERATIONVALUES_INSERT,\n    TMP_FAASDOCUMENTOPERATIONVALUES_EDIT,\n    TMP_FAASDOCUMENTOPERATIONVALUES_DELETE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasInvokedProviderValues enum definition\n *\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud';\nvar TMP_FAASINVOKEDPROVIDERVALUES_AWS = 'aws';\nvar TMP_FAASINVOKEDPROVIDERVALUES_AZURE = 'azure';\nvar TMP_FAASINVOKEDPROVIDERVALUES_GCP = 'gcp';\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_ALIBABA_CLOUD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_AWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASINVOKEDPROVIDERVALUES_AWS = TMP_FAASINVOKEDPROVIDERVALUES_AWS;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_AZURE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASINVOKEDPROVIDERVALUES_AZURE = TMP_FAASINVOKEDPROVIDERVALUES_AZURE;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_GCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASINVOKEDPROVIDERVALUES_GCP = TMP_FAASINVOKEDPROVIDERVALUES_GCP;\n/**\n * The constant map of values for FaasInvokedProviderValues.\n * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification.\n */\nexport var FaasInvokedProviderValues = \n/*#__PURE__*/ createConstMap([\n    TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD,\n    TMP_FAASINVOKEDPROVIDERVALUES_AWS,\n    TMP_FAASINVOKEDPROVIDERVALUES_AZURE,\n    TMP_FAASINVOKEDPROVIDERVALUES_GCP,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetTransportValues enum definition\n *\n * Transport protocol used. See note below.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_NETTRANSPORTVALUES_IP_TCP = 'ip_tcp';\nvar TMP_NETTRANSPORTVALUES_IP_UDP = 'ip_udp';\nvar TMP_NETTRANSPORTVALUES_IP = 'ip';\nvar TMP_NETTRANSPORTVALUES_UNIX = 'unix';\nvar TMP_NETTRANSPORTVALUES_PIPE = 'pipe';\nvar TMP_NETTRANSPORTVALUES_INPROC = 'inproc';\nvar TMP_NETTRANSPORTVALUES_OTHER = 'other';\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_IP_TCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETTRANSPORTVALUES_IP_TCP = TMP_NETTRANSPORTVALUES_IP_TCP;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_IP_UDP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETTRANSPORTVALUES_IP_UDP = TMP_NETTRANSPORTVALUES_IP_UDP;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexport var NETTRANSPORTVALUES_IP = TMP_NETTRANSPORTVALUES_IP;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexport var NETTRANSPORTVALUES_UNIX = TMP_NETTRANSPORTVALUES_UNIX;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_PIPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETTRANSPORTVALUES_PIPE = TMP_NETTRANSPORTVALUES_PIPE;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_INPROC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETTRANSPORTVALUES_INPROC = TMP_NETTRANSPORTVALUES_INPROC;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_OTHER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETTRANSPORTVALUES_OTHER = TMP_NETTRANSPORTVALUES_OTHER;\n/**\n * The constant map of values for NetTransportValues.\n * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification.\n */\nexport var NetTransportValues = \n/*#__PURE__*/ createConstMap([\n    TMP_NETTRANSPORTVALUES_IP_TCP,\n    TMP_NETTRANSPORTVALUES_IP_UDP,\n    TMP_NETTRANSPORTVALUES_IP,\n    TMP_NETTRANSPORTVALUES_UNIX,\n    TMP_NETTRANSPORTVALUES_PIPE,\n    TMP_NETTRANSPORTVALUES_INPROC,\n    TMP_NETTRANSPORTVALUES_OTHER,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionTypeValues enum definition\n *\n * The internet connection type currently being used by the host.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI = 'wifi';\nvar TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED = 'wired';\nvar TMP_NETHOSTCONNECTIONTYPEVALUES_CELL = 'cell';\nvar TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = 'unavailable';\nvar TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = 'unknown';\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_WIFI in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONTYPEVALUES_WIFI = TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_WIRED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONTYPEVALUES_WIRED = TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_CELL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONTYPEVALUES_CELL = TMP_NETHOSTCONNECTIONTYPEVALUES_CELL;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_UNAVAILABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_UNKNOWN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN;\n/**\n * The constant map of values for NetHostConnectionTypeValues.\n * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification.\n */\nexport var NetHostConnectionTypeValues = \n/*#__PURE__*/ createConstMap([\n    TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI,\n    TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED,\n    TMP_NETHOSTCONNECTIONTYPEVALUES_CELL,\n    TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE,\n    TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionSubtypeValues enum definition\n *\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = 'gprs';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = 'edge';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = 'umts';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = 'cdma';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = 'evdo_0';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = 'evdo_a';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = 'cdma2000_1xrtt';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = 'hsdpa';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = 'hsupa';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = 'hspa';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = 'iden';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = 'evdo_b';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE = 'lte';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = 'ehrpd';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = 'hspap';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM = 'gsm';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = 'td_scdma';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = 'iwlan';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR = 'nr';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = 'nrnsa';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = 'lte_ca';\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_GPRS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EDGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_UMTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_A in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA2000_1XRTT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSDPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSUPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_IDEN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_B in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_LTE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_LTE = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EHRPD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSPAP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_GSM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_GSM = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_TD_SCDMA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_IWLAN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_NR in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_NR = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_NRNSA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_LTE_CA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA;\n/**\n * The constant map of values for NetHostConnectionSubtypeValues.\n * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification.\n */\nexport var NetHostConnectionSubtypeValues = \n/*#__PURE__*/ createConstMap([\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HttpFlavorValues enum definition\n *\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_HTTPFLAVORVALUES_HTTP_1_0 = '1.0';\nvar TMP_HTTPFLAVORVALUES_HTTP_1_1 = '1.1';\nvar TMP_HTTPFLAVORVALUES_HTTP_2_0 = '2.0';\nvar TMP_HTTPFLAVORVALUES_SPDY = 'SPDY';\nvar TMP_HTTPFLAVORVALUES_QUIC = 'QUIC';\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_1_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HTTPFLAVORVALUES_HTTP_1_0 = TMP_HTTPFLAVORVALUES_HTTP_1_0;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_1_1 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HTTPFLAVORVALUES_HTTP_1_1 = TMP_HTTPFLAVORVALUES_HTTP_1_1;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_2_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HTTPFLAVORVALUES_HTTP_2_0 = TMP_HTTPFLAVORVALUES_HTTP_2_0;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_SPDY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HTTPFLAVORVALUES_SPDY = TMP_HTTPFLAVORVALUES_SPDY;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_QUIC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HTTPFLAVORVALUES_QUIC = TMP_HTTPFLAVORVALUES_QUIC;\n/**\n * The constant map of values for HttpFlavorValues.\n * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification.\n */\nexport var HttpFlavorValues = {\n    HTTP_1_0: TMP_HTTPFLAVORVALUES_HTTP_1_0,\n    HTTP_1_1: TMP_HTTPFLAVORVALUES_HTTP_1_1,\n    HTTP_2_0: TMP_HTTPFLAVORVALUES_HTTP_2_0,\n    SPDY: TMP_HTTPFLAVORVALUES_SPDY,\n    QUIC: TMP_HTTPFLAVORVALUES_QUIC,\n};\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingDestinationKindValues enum definition\n *\n * The kind of message destination.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE = 'queue';\nvar TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC = 'topic';\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport var MESSAGINGDESTINATIONKINDVALUES_QUEUE = TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE;\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport var MESSAGINGDESTINATIONKINDVALUES_TOPIC = TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC;\n/**\n * The constant map of values for MessagingDestinationKindValues.\n * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification.\n */\nexport var MessagingDestinationKindValues = \n/*#__PURE__*/ createConstMap([\n    TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE,\n    TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingOperationValues enum definition\n *\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is &#34;send&#34;, this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_MESSAGINGOPERATIONVALUES_RECEIVE = 'receive';\nvar TMP_MESSAGINGOPERATIONVALUES_PROCESS = 'process';\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is &#34;send&#34;, this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_RECEIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var MESSAGINGOPERATIONVALUES_RECEIVE = TMP_MESSAGINGOPERATIONVALUES_RECEIVE;\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is &#34;send&#34;, this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_PROCESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var MESSAGINGOPERATIONVALUES_PROCESS = TMP_MESSAGINGOPERATIONVALUES_PROCESS;\n/**\n * The constant map of values for MessagingOperationValues.\n * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification.\n */\nexport var MessagingOperationValues = \n/*#__PURE__*/ createConstMap([\n    TMP_MESSAGINGOPERATIONVALUES_RECEIVE,\n    TMP_MESSAGINGOPERATIONVALUES_PROCESS,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for RpcGrpcStatusCodeValues enum definition\n *\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_RPCGRPCSTATUSCODEVALUES_OK = 0;\nvar TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED = 1;\nvar TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN = 2;\nvar TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = 3;\nvar TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = 4;\nvar TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND = 5;\nvar TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = 6;\nvar TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = 7;\nvar TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = 8;\nvar TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = 9;\nvar TMP_RPCGRPCSTATUSCODEVALUES_ABORTED = 10;\nvar TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = 11;\nvar TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = 12;\nvar TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL = 13;\nvar TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = 14;\nvar TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS = 15;\nvar TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = 16;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_OK in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_OK = TMP_RPCGRPCSTATUSCODEVALUES_OK;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_CANCELLED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_CANCELLED = TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNKNOWN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_UNKNOWN = TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_INVALID_ARGUMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_DEADLINE_EXCEEDED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_NOT_FOUND in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_NOT_FOUND = TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_ALREADY_EXISTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_PERMISSION_DENIED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_RESOURCE_EXHAUSTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_FAILED_PRECONDITION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_ABORTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_ABORTED = TMP_RPCGRPCSTATUSCODEVALUES_ABORTED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_OUT_OF_RANGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNIMPLEMENTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_INTERNAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_INTERNAL = TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNAVAILABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_DATA_LOSS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_DATA_LOSS = TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNAUTHENTICATED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED;\n/**\n * The constant map of values for RpcGrpcStatusCodeValues.\n * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification.\n */\nexport var RpcGrpcStatusCodeValues = {\n    OK: TMP_RPCGRPCSTATUSCODEVALUES_OK,\n    CANCELLED: TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED,\n    UNKNOWN: TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN,\n    INVALID_ARGUMENT: TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT,\n    DEADLINE_EXCEEDED: TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED,\n    NOT_FOUND: TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND,\n    ALREADY_EXISTS: TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS,\n    PERMISSION_DENIED: TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED,\n    RESOURCE_EXHAUSTED: TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED,\n    FAILED_PRECONDITION: TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION,\n    ABORTED: TMP_RPCGRPCSTATUSCODEVALUES_ABORTED,\n    OUT_OF_RANGE: TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE,\n    UNIMPLEMENTED: TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED,\n    INTERNAL: TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL,\n    UNAVAILABLE: TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE,\n    DATA_LOSS: TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS,\n    UNAUTHENTICATED: TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED,\n};\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessageTypeValues enum definition\n *\n * Whether this is a received or sent message.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_MESSAGETYPEVALUES_SENT = 'SENT';\nvar TMP_MESSAGETYPEVALUES_RECEIVED = 'RECEIVED';\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use MESSAGE_TYPE_VALUE_SENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var MESSAGETYPEVALUES_SENT = TMP_MESSAGETYPEVALUES_SENT;\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use MESSAGE_TYPE_VALUE_RECEIVED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var MESSAGETYPEVALUES_RECEIVED = TMP_MESSAGETYPEVALUES_RECEIVED;\n/**\n * The constant map of values for MessageTypeValues.\n * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification.\n */\nexport var MessageTypeValues = \n/*#__PURE__*/ createConstMap([\n    TMP_MESSAGETYPEVALUES_SENT,\n    TMP_MESSAGETYPEVALUES_RECEIVED,\n]);\n//# sourceMappingURL=SemanticAttributes.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only one-level deep at this point,\n * and should not cause problems for tree-shakers.\n */\nexport * from './SemanticAttributes';\n//# sourceMappingURL=index.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createConstMap } from '../internal/utils';\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticResourceAttributes\n//----------------------------------------------------------------------------------------------------------\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_CLOUD_PROVIDER = 'cloud.provider';\nvar TMP_CLOUD_ACCOUNT_ID = 'cloud.account.id';\nvar TMP_CLOUD_REGION = 'cloud.region';\nvar TMP_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone';\nvar TMP_CLOUD_PLATFORM = 'cloud.platform';\nvar TMP_AWS_ECS_CONTAINER_ARN = 'aws.ecs.container.arn';\nvar TMP_AWS_ECS_CLUSTER_ARN = 'aws.ecs.cluster.arn';\nvar TMP_AWS_ECS_LAUNCHTYPE = 'aws.ecs.launchtype';\nvar TMP_AWS_ECS_TASK_ARN = 'aws.ecs.task.arn';\nvar TMP_AWS_ECS_TASK_FAMILY = 'aws.ecs.task.family';\nvar TMP_AWS_ECS_TASK_REVISION = 'aws.ecs.task.revision';\nvar TMP_AWS_EKS_CLUSTER_ARN = 'aws.eks.cluster.arn';\nvar TMP_AWS_LOG_GROUP_NAMES = 'aws.log.group.names';\nvar TMP_AWS_LOG_GROUP_ARNS = 'aws.log.group.arns';\nvar TMP_AWS_LOG_STREAM_NAMES = 'aws.log.stream.names';\nvar TMP_AWS_LOG_STREAM_ARNS = 'aws.log.stream.arns';\nvar TMP_CONTAINER_NAME = 'container.name';\nvar TMP_CONTAINER_ID = 'container.id';\nvar TMP_CONTAINER_RUNTIME = 'container.runtime';\nvar TMP_CONTAINER_IMAGE_NAME = 'container.image.name';\nvar TMP_CONTAINER_IMAGE_TAG = 'container.image.tag';\nvar TMP_DEPLOYMENT_ENVIRONMENT = 'deployment.environment';\nvar TMP_DEVICE_ID = 'device.id';\nvar TMP_DEVICE_MODEL_IDENTIFIER = 'device.model.identifier';\nvar TMP_DEVICE_MODEL_NAME = 'device.model.name';\nvar TMP_FAAS_NAME = 'faas.name';\nvar TMP_FAAS_ID = 'faas.id';\nvar TMP_FAAS_VERSION = 'faas.version';\nvar TMP_FAAS_INSTANCE = 'faas.instance';\nvar TMP_FAAS_MAX_MEMORY = 'faas.max_memory';\nvar TMP_HOST_ID = 'host.id';\nvar TMP_HOST_NAME = 'host.name';\nvar TMP_HOST_TYPE = 'host.type';\nvar TMP_HOST_ARCH = 'host.arch';\nvar TMP_HOST_IMAGE_NAME = 'host.image.name';\nvar TMP_HOST_IMAGE_ID = 'host.image.id';\nvar TMP_HOST_IMAGE_VERSION = 'host.image.version';\nvar TMP_K8S_CLUSTER_NAME = 'k8s.cluster.name';\nvar TMP_K8S_NODE_NAME = 'k8s.node.name';\nvar TMP_K8S_NODE_UID = 'k8s.node.uid';\nvar TMP_K8S_NAMESPACE_NAME = 'k8s.namespace.name';\nvar TMP_K8S_POD_UID = 'k8s.pod.uid';\nvar TMP_K8S_POD_NAME = 'k8s.pod.name';\nvar TMP_K8S_CONTAINER_NAME = 'k8s.container.name';\nvar TMP_K8S_REPLICASET_UID = 'k8s.replicaset.uid';\nvar TMP_K8S_REPLICASET_NAME = 'k8s.replicaset.name';\nvar TMP_K8S_DEPLOYMENT_UID = 'k8s.deployment.uid';\nvar TMP_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name';\nvar TMP_K8S_STATEFULSET_UID = 'k8s.statefulset.uid';\nvar TMP_K8S_STATEFULSET_NAME = 'k8s.statefulset.name';\nvar TMP_K8S_DAEMONSET_UID = 'k8s.daemonset.uid';\nvar TMP_K8S_DAEMONSET_NAME = 'k8s.daemonset.name';\nvar TMP_K8S_JOB_UID = 'k8s.job.uid';\nvar TMP_K8S_JOB_NAME = 'k8s.job.name';\nvar TMP_K8S_CRONJOB_UID = 'k8s.cronjob.uid';\nvar TMP_K8S_CRONJOB_NAME = 'k8s.cronjob.name';\nvar TMP_OS_TYPE = 'os.type';\nvar TMP_OS_DESCRIPTION = 'os.description';\nvar TMP_OS_NAME = 'os.name';\nvar TMP_OS_VERSION = 'os.version';\nvar TMP_PROCESS_PID = 'process.pid';\nvar TMP_PROCESS_EXECUTABLE_NAME = 'process.executable.name';\nvar TMP_PROCESS_EXECUTABLE_PATH = 'process.executable.path';\nvar TMP_PROCESS_COMMAND = 'process.command';\nvar TMP_PROCESS_COMMAND_LINE = 'process.command_line';\nvar TMP_PROCESS_COMMAND_ARGS = 'process.command_args';\nvar TMP_PROCESS_OWNER = 'process.owner';\nvar TMP_PROCESS_RUNTIME_NAME = 'process.runtime.name';\nvar TMP_PROCESS_RUNTIME_VERSION = 'process.runtime.version';\nvar TMP_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description';\nvar TMP_SERVICE_NAME = 'service.name';\nvar TMP_SERVICE_NAMESPACE = 'service.namespace';\nvar TMP_SERVICE_INSTANCE_ID = 'service.instance.id';\nvar TMP_SERVICE_VERSION = 'service.version';\nvar TMP_TELEMETRY_SDK_NAME = 'telemetry.sdk.name';\nvar TMP_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language';\nvar TMP_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version';\nvar TMP_TELEMETRY_AUTO_VERSION = 'telemetry.auto.version';\nvar TMP_WEBENGINE_NAME = 'webengine.name';\nvar TMP_WEBENGINE_VERSION = 'webengine.version';\nvar TMP_WEBENGINE_DESCRIPTION = 'webengine.description';\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use ATTR_CLOUD_PROVIDER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CLOUD_PROVIDER = TMP_CLOUD_PROVIDER;\n/**\n * The cloud account ID the resource is assigned to.\n *\n * @deprecated Use ATTR_CLOUD_ACCOUNT_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CLOUD_ACCOUNT_ID = TMP_CLOUD_ACCOUNT_ID;\n/**\n * The geographical region the resource is running. Refer to your provider&#39;s docs to see the available regions, for example [Alibaba Cloud regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), [AWS regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), [Azure regions](https://azure.microsoft.com/en-us/global-infrastructure/geographies/), or [Google Cloud regions](https://cloud.google.com/about/locations).\n *\n * @deprecated Use ATTR_CLOUD_REGION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CLOUD_REGION = TMP_CLOUD_REGION;\n/**\n * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running.\n *\n * Note: Availability zones are called &#34;zones&#34; on Alibaba Cloud and Google Cloud.\n *\n * @deprecated Use ATTR_CLOUD_AVAILABILITY_ZONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CLOUD_AVAILABILITY_ZONE = TMP_CLOUD_AVAILABILITY_ZONE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use ATTR_CLOUD_PLATFORM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CLOUD_PLATFORM = TMP_CLOUD_PLATFORM;\n/**\n * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html).\n *\n * @deprecated Use ATTR_AWS_ECS_CONTAINER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_ECS_CONTAINER_ARN = TMP_AWS_ECS_CONTAINER_ARN;\n/**\n * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).\n *\n * @deprecated Use ATTR_AWS_ECS_CLUSTER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_ECS_CLUSTER_ARN = TMP_AWS_ECS_CLUSTER_ARN;\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use ATTR_AWS_ECS_LAUNCHTYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_ECS_LAUNCHTYPE = TMP_AWS_ECS_LAUNCHTYPE;\n/**\n * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html).\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_ECS_TASK_ARN = TMP_AWS_ECS_TASK_ARN;\n/**\n * The task definition family this task definition is a member of.\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_FAMILY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_ECS_TASK_FAMILY = TMP_AWS_ECS_TASK_FAMILY;\n/**\n * The revision for this task definition.\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_REVISION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_ECS_TASK_REVISION = TMP_AWS_ECS_TASK_REVISION;\n/**\n * The ARN of an EKS cluster.\n *\n * @deprecated Use ATTR_AWS_EKS_CLUSTER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_EKS_CLUSTER_ARN = TMP_AWS_EKS_CLUSTER_ARN;\n/**\n * The name(s) of the AWS log group(s) an application is writing to.\n *\n * Note: Multiple log groups must be supported for cases like multi-container applications, where a single application has sidecar containers, and each write to their own log group.\n *\n * @deprecated Use ATTR_AWS_LOG_GROUP_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_LOG_GROUP_NAMES = TMP_AWS_LOG_GROUP_NAMES;\n/**\n * The Amazon Resource Name(s) (ARN) of the AWS log group(s).\n *\n * Note: See the [log group ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format).\n *\n * @deprecated Use ATTR_AWS_LOG_GROUP_ARNS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_LOG_GROUP_ARNS = TMP_AWS_LOG_GROUP_ARNS;\n/**\n * The name(s) of the AWS log stream(s) an application is writing to.\n *\n * @deprecated Use ATTR_AWS_LOG_STREAM_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_LOG_STREAM_NAMES = TMP_AWS_LOG_STREAM_NAMES;\n/**\n * The ARN(s) of the AWS log stream(s).\n *\n * Note: See the [log stream ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). One log group can contain several log streams, so these ARNs necessarily identify both a log group and a log stream.\n *\n * @deprecated Use ATTR_AWS_LOG_STREAM_ARNS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_LOG_STREAM_ARNS = TMP_AWS_LOG_STREAM_ARNS;\n/**\n * Container name.\n *\n * @deprecated Use ATTR_CONTAINER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CONTAINER_NAME = TMP_CONTAINER_NAME;\n/**\n * Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/reference/run/#container-identification). The UUID might be abbreviated.\n *\n * @deprecated Use ATTR_CONTAINER_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CONTAINER_ID = TMP_CONTAINER_ID;\n/**\n * The container runtime managing this container.\n *\n * @deprecated Use ATTR_CONTAINER_RUNTIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CONTAINER_RUNTIME = TMP_CONTAINER_RUNTIME;\n/**\n * Name of the image the container was built on.\n *\n * @deprecated Use ATTR_CONTAINER_IMAGE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CONTAINER_IMAGE_NAME = TMP_CONTAINER_IMAGE_NAME;\n/**\n * Container image tag.\n *\n * @deprecated Use ATTR_CONTAINER_IMAGE_TAGS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CONTAINER_IMAGE_TAG = TMP_CONTAINER_IMAGE_TAG;\n/**\n * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier).\n *\n * @deprecated Use ATTR_DEPLOYMENT_ENVIRONMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_DEPLOYMENT_ENVIRONMENT = TMP_DEPLOYMENT_ENVIRONMENT;\n/**\n * A unique identifier representing the device.\n *\n * Note: The device identifier MUST only be defined using the values outlined below. This value is not an advertising identifier and MUST NOT be used as such. On iOS (Swift or Objective-C), this value MUST be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android (Java or Kotlin), this value MUST be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application. More information can be found [here](https://developer.android.com/training/articles/user-data-ids) on best practices and exact implementation details. Caution should be taken when storing personal data or anything which can identify a user. GDPR and data protection laws may apply, ensure you do your own due diligence.\n *\n * @deprecated Use ATTR_DEVICE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_DEVICE_ID = TMP_DEVICE_ID;\n/**\n * The model identifier for the device.\n *\n * Note: It&#39;s recommended this value represents a machine readable version of the model identifier rather than the market or consumer-friendly name of the device.\n *\n * @deprecated Use ATTR_DEVICE_MODEL_IDENTIFIER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_DEVICE_MODEL_IDENTIFIER = TMP_DEVICE_MODEL_IDENTIFIER;\n/**\n * The marketing name for the device model.\n *\n * Note: It&#39;s recommended this value represents a human readable version of the device model rather than a machine readable alternative.\n *\n * @deprecated Use ATTR_DEVICE_MODEL_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_DEVICE_MODEL_NAME = TMP_DEVICE_MODEL_NAME;\n/**\n * The name of the single function that this runtime instance executes.\n *\n * Note: This is the name of the function as configured/deployed on the FaaS platform and is usually different from the name of the callback function (which may be stored in the [`code.namespace`/`code.function`](../../trace/semantic_conventions/span-general.md#source-code-attributes) span attributes).\n *\n * @deprecated Use ATTR_FAAS_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_FAAS_NAME = TMP_FAAS_NAME;\n/**\n* The unique ID of the single function that this runtime instance executes.\n*\n* Note: Depending on the cloud provider, use:\n\n* **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).\nTake care not to use the &#34;invoked ARN&#34; directly but replace any\n[alias suffix](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) with the resolved function version, as the same runtime instance may be invokable with multiple\ndifferent aliases.\n* **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names)\n* **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id).\n\nOn some providers, it may not be possible to determine the full ID at startup,\nwhich is why this field cannot be made required. For example, on AWS the account ID\npart of the ARN is not available without calling another AWS API\nwhich may be deemed too slow for a short-running lambda function.\nAs an alternative, consider setting `faas.id` as a span attribute instead.\n*\n* @deprecated Use ATTR_CLOUD_RESOURCE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexport var SEMRESATTRS_FAAS_ID = TMP_FAAS_ID;\n/**\n* The immutable version of the function being executed.\n*\n* Note: Depending on the cloud provider and platform, use:\n\n* **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html)\n  (an integer represented as a decimal string).\n* **Google Cloud Run:** The [revision](https://cloud.google.com/run/docs/managing/revisions)\n  (i.e., the function name plus the revision suffix).\n* **Google Cloud Functions:** The value of the\n  [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically).\n* **Azure Functions:** Not applicable. Do not set this attribute.\n*\n* @deprecated Use ATTR_FAAS_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexport var SEMRESATTRS_FAAS_VERSION = TMP_FAAS_VERSION;\n/**\n * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version.\n *\n * Note: * **AWS Lambda:** Use the (full) log stream name.\n *\n * @deprecated Use ATTR_FAAS_INSTANCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_FAAS_INSTANCE = TMP_FAAS_INSTANCE;\n/**\n * The amount of memory available to the serverless function in MiB.\n *\n * Note: It&#39;s recommended to set this attribute since e.g. too little memory can easily stop a Java AWS Lambda function from working correctly. On AWS Lambda, the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this information.\n *\n * @deprecated Use ATTR_FAAS_MAX_MEMORY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_FAAS_MAX_MEMORY = TMP_FAAS_MAX_MEMORY;\n/**\n * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider.\n *\n * @deprecated Use ATTR_HOST_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_HOST_ID = TMP_HOST_ID;\n/**\n * Name of the host. On Unix systems, it may contain what the hostname command returns, or the fully qualified hostname, or another name specified by the user.\n *\n * @deprecated Use ATTR_HOST_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_HOST_NAME = TMP_HOST_NAME;\n/**\n * Type of host. For Cloud, this must be the machine type.\n *\n * @deprecated Use ATTR_HOST_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_HOST_TYPE = TMP_HOST_TYPE;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use ATTR_HOST_ARCH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_HOST_ARCH = TMP_HOST_ARCH;\n/**\n * Name of the VM image or OS install the host was instantiated from.\n *\n * @deprecated Use ATTR_HOST_IMAGE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_HOST_IMAGE_NAME = TMP_HOST_IMAGE_NAME;\n/**\n * VM image ID. For Cloud, this value is from the provider.\n *\n * @deprecated Use ATTR_HOST_IMAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_HOST_IMAGE_ID = TMP_HOST_IMAGE_ID;\n/**\n * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes).\n *\n * @deprecated Use ATTR_HOST_IMAGE_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_HOST_IMAGE_VERSION = TMP_HOST_IMAGE_VERSION;\n/**\n * The name of the cluster.\n *\n * @deprecated Use ATTR_K8S_CLUSTER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_CLUSTER_NAME = TMP_K8S_CLUSTER_NAME;\n/**\n * The name of the Node.\n *\n * @deprecated Use ATTR_K8S_NODE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_NODE_NAME = TMP_K8S_NODE_NAME;\n/**\n * The UID of the Node.\n *\n * @deprecated Use ATTR_K8S_NODE_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_NODE_UID = TMP_K8S_NODE_UID;\n/**\n * The name of the namespace that the pod is running in.\n *\n * @deprecated Use ATTR_K8S_NAMESPACE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_NAMESPACE_NAME = TMP_K8S_NAMESPACE_NAME;\n/**\n * The UID of the Pod.\n *\n * @deprecated Use ATTR_K8S_POD_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_POD_UID = TMP_K8S_POD_UID;\n/**\n * The name of the Pod.\n *\n * @deprecated Use ATTR_K8S_POD_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_POD_NAME = TMP_K8S_POD_NAME;\n/**\n * The name of the Container in a Pod template.\n *\n * @deprecated Use ATTR_K8S_CONTAINER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_CONTAINER_NAME = TMP_K8S_CONTAINER_NAME;\n/**\n * The UID of the ReplicaSet.\n *\n * @deprecated Use ATTR_K8S_REPLICASET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_REPLICASET_UID = TMP_K8S_REPLICASET_UID;\n/**\n * The name of the ReplicaSet.\n *\n * @deprecated Use ATTR_K8S_REPLICASET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_REPLICASET_NAME = TMP_K8S_REPLICASET_NAME;\n/**\n * The UID of the Deployment.\n *\n * @deprecated Use ATTR_K8S_DEPLOYMENT_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_DEPLOYMENT_UID = TMP_K8S_DEPLOYMENT_UID;\n/**\n * The name of the Deployment.\n *\n * @deprecated Use ATTR_K8S_DEPLOYMENT_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_DEPLOYMENT_NAME = TMP_K8S_DEPLOYMENT_NAME;\n/**\n * The UID of the StatefulSet.\n *\n * @deprecated Use ATTR_K8S_STATEFULSET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_STATEFULSET_UID = TMP_K8S_STATEFULSET_UID;\n/**\n * The name of the StatefulSet.\n *\n * @deprecated Use ATTR_K8S_STATEFULSET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_STATEFULSET_NAME = TMP_K8S_STATEFULSET_NAME;\n/**\n * The UID of the DaemonSet.\n *\n * @deprecated Use ATTR_K8S_DAEMONSET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_DAEMONSET_UID = TMP_K8S_DAEMONSET_UID;\n/**\n * The name of the DaemonSet.\n *\n * @deprecated Use ATTR_K8S_DAEMONSET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_DAEMONSET_NAME = TMP_K8S_DAEMONSET_NAME;\n/**\n * The UID of the Job.\n *\n * @deprecated Use ATTR_K8S_JOB_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_JOB_UID = TMP_K8S_JOB_UID;\n/**\n * The name of the Job.\n *\n * @deprecated Use ATTR_K8S_JOB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_JOB_NAME = TMP_K8S_JOB_NAME;\n/**\n * The UID of the CronJob.\n *\n * @deprecated Use ATTR_K8S_CRONJOB_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_CRONJOB_UID = TMP_K8S_CRONJOB_UID;\n/**\n * The name of the CronJob.\n *\n * @deprecated Use ATTR_K8S_CRONJOB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_CRONJOB_NAME = TMP_K8S_CRONJOB_NAME;\n/**\n * The operating system type.\n *\n * @deprecated Use ATTR_OS_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_OS_TYPE = TMP_OS_TYPE;\n/**\n * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands.\n *\n * @deprecated Use ATTR_OS_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_OS_DESCRIPTION = TMP_OS_DESCRIPTION;\n/**\n * Human readable operating system name.\n *\n * @deprecated Use ATTR_OS_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_OS_NAME = TMP_OS_NAME;\n/**\n * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes).\n *\n * @deprecated Use ATTR_OS_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_OS_VERSION = TMP_OS_VERSION;\n/**\n * Process identifier (PID).\n *\n * @deprecated Use ATTR_PROCESS_PID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_PID = TMP_PROCESS_PID;\n/**\n * The name of the process executable. On Linux based systems, can be set to the `Name` in `proc/[pid]/status`. On Windows, can be set to the base name of `GetProcessImageFileNameW`.\n *\n * @deprecated Use ATTR_PROCESS_EXECUTABLE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_EXECUTABLE_NAME = TMP_PROCESS_EXECUTABLE_NAME;\n/**\n * The full path to the process executable. On Linux based systems, can be set to the target of `proc/[pid]/exe`. On Windows, can be set to the result of `GetProcessImageFileNameW`.\n *\n * @deprecated Use ATTR_PROCESS_EXECUTABLE_PATH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_EXECUTABLE_PATH = TMP_PROCESS_EXECUTABLE_PATH;\n/**\n * The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter extracted from `GetCommandLineW`.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_COMMAND = TMP_PROCESS_COMMAND;\n/**\n * The full command used to launch the process as a single string representing the full command. On Windows, can be set to the result of `GetCommandLineW`. Do not set this if you have to assemble it just for monitoring; use `process.command_args` instead.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND_LINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_COMMAND_LINE = TMP_PROCESS_COMMAND_LINE;\n/**\n * All the command arguments (including the command/executable itself) as received by the process. On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according to the list of null-delimited strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this would be the full argv vector passed to `main`.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND_ARGS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_COMMAND_ARGS = TMP_PROCESS_COMMAND_ARGS;\n/**\n * The username of the user that owns the process.\n *\n * @deprecated Use ATTR_PROCESS_OWNER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_OWNER = TMP_PROCESS_OWNER;\n/**\n * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_RUNTIME_NAME = TMP_PROCESS_RUNTIME_NAME;\n/**\n * The version of the runtime of this process, as returned by the runtime without modification.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_RUNTIME_VERSION = TMP_PROCESS_RUNTIME_VERSION;\n/**\n * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION = TMP_PROCESS_RUNTIME_DESCRIPTION;\n/**\n * Logical name of the service.\n *\n * Note: MUST be the same for all instances of horizontally scaled services. If the value was not specified, SDKs MUST fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md#process), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value MUST be set to `unknown_service`.\n *\n * @deprecated Use ATTR_SERVICE_NAME.\n */\nexport var SEMRESATTRS_SERVICE_NAME = TMP_SERVICE_NAME;\n/**\n * A namespace for `service.name`.\n *\n * Note: A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n *\n * @deprecated Use ATTR_SERVICE_NAMESPACE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_SERVICE_NAMESPACE = TMP_SERVICE_NAMESPACE;\n/**\n * The string ID of the service instance.\n *\n * Note: MUST be unique for each instance of the same `service.namespace,service.name` pair (in other words `service.namespace,service.name,service.instance.id` triplet MUST be globally unique). The ID helps to distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled service). It is preferable for the ID to be persistent and stay the same for the lifetime of the service instance, however it is acceptable that the ID is ephemeral and changes during important lifetime events for the service (e.g. service restarts). If the service has no inherent unique ID that can be used as the value of this attribute it is recommended to generate a random Version 1 or Version 4 RFC 4122 UUID (services aiming for reproducible UUIDs may also use Version 5, see RFC 4122 for more recommendations).\n *\n * @deprecated Use ATTR_SERVICE_INSTANCE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_SERVICE_INSTANCE_ID = TMP_SERVICE_INSTANCE_ID;\n/**\n * The version string of the service API or implementation.\n *\n * @deprecated Use ATTR_SERVICE_VERSION.\n */\nexport var SEMRESATTRS_SERVICE_VERSION = TMP_SERVICE_VERSION;\n/**\n * The name of the telemetry SDK as defined above.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_NAME.\n */\nexport var SEMRESATTRS_TELEMETRY_SDK_NAME = TMP_TELEMETRY_SDK_NAME;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_LANGUAGE.\n */\nexport var SEMRESATTRS_TELEMETRY_SDK_LANGUAGE = TMP_TELEMETRY_SDK_LANGUAGE;\n/**\n * The version string of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_VERSION.\n */\nexport var SEMRESATTRS_TELEMETRY_SDK_VERSION = TMP_TELEMETRY_SDK_VERSION;\n/**\n * The version string of the auto instrumentation agent, if used.\n *\n * @deprecated Use ATTR_TELEMETRY_DISTRO_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_TELEMETRY_AUTO_VERSION = TMP_TELEMETRY_AUTO_VERSION;\n/**\n * The name of the web engine.\n *\n * @deprecated Use ATTR_WEBENGINE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_WEBENGINE_NAME = TMP_WEBENGINE_NAME;\n/**\n * The version of the web engine.\n *\n * @deprecated Use ATTR_WEBENGINE_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_WEBENGINE_VERSION = TMP_WEBENGINE_VERSION;\n/**\n * Additional description of the web engine (e.g. detailed version and edition information).\n *\n * @deprecated Use ATTR_WEBENGINE_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_WEBENGINE_DESCRIPTION = TMP_WEBENGINE_DESCRIPTION;\n/**\n * Create exported Value Map for SemanticResourceAttributes values\n * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification\n */\nexport var SemanticResourceAttributes = \n/*#__PURE__*/ createConstMap([\n    TMP_CLOUD_PROVIDER,\n    TMP_CLOUD_ACCOUNT_ID,\n    TMP_CLOUD_REGION,\n    TMP_CLOUD_AVAILABILITY_ZONE,\n    TMP_CLOUD_PLATFORM,\n    TMP_AWS_ECS_CONTAINER_ARN,\n    TMP_AWS_ECS_CLUSTER_ARN,\n    TMP_AWS_ECS_LAUNCHTYPE,\n    TMP_AWS_ECS_TASK_ARN,\n    TMP_AWS_ECS_TASK_FAMILY,\n    TMP_AWS_ECS_TASK_REVISION,\n    TMP_AWS_EKS_CLUSTER_ARN,\n    TMP_AWS_LOG_GROUP_NAMES,\n    TMP_AWS_LOG_GROUP_ARNS,\n    TMP_AWS_LOG_STREAM_NAMES,\n    TMP_AWS_LOG_STREAM_ARNS,\n    TMP_CONTAINER_NAME,\n    TMP_CONTAINER_ID,\n    TMP_CONTAINER_RUNTIME,\n    TMP_CONTAINER_IMAGE_NAME,\n    TMP_CONTAINER_IMAGE_TAG,\n    TMP_DEPLOYMENT_ENVIRONMENT,\n    TMP_DEVICE_ID,\n    TMP_DEVICE_MODEL_IDENTIFIER,\n    TMP_DEVICE_MODEL_NAME,\n    TMP_FAAS_NAME,\n    TMP_FAAS_ID,\n    TMP_FAAS_VERSION,\n    TMP_FAAS_INSTANCE,\n    TMP_FAAS_MAX_MEMORY,\n    TMP_HOST_ID,\n    TMP_HOST_NAME,\n    TMP_HOST_TYPE,\n    TMP_HOST_ARCH,\n    TMP_HOST_IMAGE_NAME,\n    TMP_HOST_IMAGE_ID,\n    TMP_HOST_IMAGE_VERSION,\n    TMP_K8S_CLUSTER_NAME,\n    TMP_K8S_NODE_NAME,\n    TMP_K8S_NODE_UID,\n    TMP_K8S_NAMESPACE_NAME,\n    TMP_K8S_POD_UID,\n    TMP_K8S_POD_NAME,\n    TMP_K8S_CONTAINER_NAME,\n    TMP_K8S_REPLICASET_UID,\n    TMP_K8S_REPLICASET_NAME,\n    TMP_K8S_DEPLOYMENT_UID,\n    TMP_K8S_DEPLOYMENT_NAME,\n    TMP_K8S_STATEFULSET_UID,\n    TMP_K8S_STATEFULSET_NAME,\n    TMP_K8S_DAEMONSET_UID,\n    TMP_K8S_DAEMONSET_NAME,\n    TMP_K8S_JOB_UID,\n    TMP_K8S_JOB_NAME,\n    TMP_K8S_CRONJOB_UID,\n    TMP_K8S_CRONJOB_NAME,\n    TMP_OS_TYPE,\n    TMP_OS_DESCRIPTION,\n    TMP_OS_NAME,\n    TMP_OS_VERSION,\n    TMP_PROCESS_PID,\n    TMP_PROCESS_EXECUTABLE_NAME,\n    TMP_PROCESS_EXECUTABLE_PATH,\n    TMP_PROCESS_COMMAND,\n    TMP_PROCESS_COMMAND_LINE,\n    TMP_PROCESS_COMMAND_ARGS,\n    TMP_PROCESS_OWNER,\n    TMP_PROCESS_RUNTIME_NAME,\n    TMP_PROCESS_RUNTIME_VERSION,\n    TMP_PROCESS_RUNTIME_DESCRIPTION,\n    TMP_SERVICE_NAME,\n    TMP_SERVICE_NAMESPACE,\n    TMP_SERVICE_INSTANCE_ID,\n    TMP_SERVICE_VERSION,\n    TMP_TELEMETRY_SDK_NAME,\n    TMP_TELEMETRY_SDK_LANGUAGE,\n    TMP_TELEMETRY_SDK_VERSION,\n    TMP_TELEMETRY_AUTO_VERSION,\n    TMP_WEBENGINE_NAME,\n    TMP_WEBENGINE_VERSION,\n    TMP_WEBENGINE_DESCRIPTION,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudProviderValues enum definition\n *\n * Name of the cloud provider.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud';\nvar TMP_CLOUDPROVIDERVALUES_AWS = 'aws';\nvar TMP_CLOUDPROVIDERVALUES_AZURE = 'azure';\nvar TMP_CLOUDPROVIDERVALUES_GCP = 'gcp';\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_ALIBABA_CLOUD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPROVIDERVALUES_ALIBABA_CLOUD = TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD;\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_AWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPROVIDERVALUES_AWS = TMP_CLOUDPROVIDERVALUES_AWS;\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_AZURE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPROVIDERVALUES_AZURE = TMP_CLOUDPROVIDERVALUES_AZURE;\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_GCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPROVIDERVALUES_GCP = TMP_CLOUDPROVIDERVALUES_GCP;\n/**\n * The constant map of values for CloudProviderValues.\n * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification.\n */\nexport var CloudProviderValues = \n/*#__PURE__*/ createConstMap([\n    TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD,\n    TMP_CLOUDPROVIDERVALUES_AWS,\n    TMP_CLOUDPROVIDERVALUES_AZURE,\n    TMP_CLOUDPROVIDERVALUES_GCP,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudPlatformValues enum definition\n *\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = 'alibaba_cloud_ecs';\nvar TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = 'alibaba_cloud_fc';\nvar TMP_CLOUDPLATFORMVALUES_AWS_EC2 = 'aws_ec2';\nvar TMP_CLOUDPLATFORMVALUES_AWS_ECS = 'aws_ecs';\nvar TMP_CLOUDPLATFORMVALUES_AWS_EKS = 'aws_eks';\nvar TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA = 'aws_lambda';\nvar TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = 'aws_elastic_beanstalk';\nvar TMP_CLOUDPLATFORMVALUES_AZURE_VM = 'azure_vm';\nvar TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = 'azure_container_instances';\nvar TMP_CLOUDPLATFORMVALUES_AZURE_AKS = 'azure_aks';\nvar TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = 'azure_functions';\nvar TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = 'azure_app_service';\nvar TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = 'gcp_compute_engine';\nvar TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = 'gcp_cloud_run';\nvar TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = 'gcp_kubernetes_engine';\nvar TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = 'gcp_cloud_functions';\nvar TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE = 'gcp_app_engine';\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_ECS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_FC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_EC2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AWS_EC2 = TMP_CLOUDPLATFORMVALUES_AWS_EC2;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_ECS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AWS_ECS = TMP_CLOUDPLATFORMVALUES_AWS_ECS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_EKS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AWS_EKS = TMP_CLOUDPLATFORMVALUES_AWS_EKS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_LAMBDA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AWS_LAMBDA = TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_VM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AZURE_VM = TMP_CLOUDPLATFORMVALUES_AZURE_VM;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_INSTANCES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_AKS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AZURE_AKS = TMP_CLOUDPLATFORMVALUES_AZURE_AKS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_FUNCTIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_APP_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_COMPUTE_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_CLOUD_RUN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_KUBERNETES_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_CLOUD_FUNCTIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_APP_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_GCP_APP_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE;\n/**\n * The constant map of values for CloudPlatformValues.\n * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification.\n */\nexport var CloudPlatformValues = \n/*#__PURE__*/ createConstMap([\n    TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS,\n    TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC,\n    TMP_CLOUDPLATFORMVALUES_AWS_EC2,\n    TMP_CLOUDPLATFORMVALUES_AWS_ECS,\n    TMP_CLOUDPLATFORMVALUES_AWS_EKS,\n    TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA,\n    TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK,\n    TMP_CLOUDPLATFORMVALUES_AZURE_VM,\n    TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES,\n    TMP_CLOUDPLATFORMVALUES_AZURE_AKS,\n    TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS,\n    TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE,\n    TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE,\n    TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN,\n    TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE,\n    TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS,\n    TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for AwsEcsLaunchtypeValues enum definition\n *\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_AWSECSLAUNCHTYPEVALUES_EC2 = 'ec2';\nvar TMP_AWSECSLAUNCHTYPEVALUES_FARGATE = 'fargate';\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use AWS_ECS_LAUNCHTYPE_VALUE_EC2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var AWSECSLAUNCHTYPEVALUES_EC2 = TMP_AWSECSLAUNCHTYPEVALUES_EC2;\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use AWS_ECS_LAUNCHTYPE_VALUE_FARGATE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var AWSECSLAUNCHTYPEVALUES_FARGATE = TMP_AWSECSLAUNCHTYPEVALUES_FARGATE;\n/**\n * The constant map of values for AwsEcsLaunchtypeValues.\n * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification.\n */\nexport var AwsEcsLaunchtypeValues = \n/*#__PURE__*/ createConstMap([\n    TMP_AWSECSLAUNCHTYPEVALUES_EC2,\n    TMP_AWSECSLAUNCHTYPEVALUES_FARGATE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HostArchValues enum definition\n *\n * The CPU architecture the host system is running on.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_HOSTARCHVALUES_AMD64 = 'amd64';\nvar TMP_HOSTARCHVALUES_ARM32 = 'arm32';\nvar TMP_HOSTARCHVALUES_ARM64 = 'arm64';\nvar TMP_HOSTARCHVALUES_IA64 = 'ia64';\nvar TMP_HOSTARCHVALUES_PPC32 = 'ppc32';\nvar TMP_HOSTARCHVALUES_PPC64 = 'ppc64';\nvar TMP_HOSTARCHVALUES_X86 = 'x86';\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_AMD64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HOSTARCHVALUES_AMD64 = TMP_HOSTARCHVALUES_AMD64;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_ARM32 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HOSTARCHVALUES_ARM32 = TMP_HOSTARCHVALUES_ARM32;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_ARM64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HOSTARCHVALUES_ARM64 = TMP_HOSTARCHVALUES_ARM64;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_IA64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HOSTARCHVALUES_IA64 = TMP_HOSTARCHVALUES_IA64;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_PPC32 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HOSTARCHVALUES_PPC32 = TMP_HOSTARCHVALUES_PPC32;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_PPC64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HOSTARCHVALUES_PPC64 = TMP_HOSTARCHVALUES_PPC64;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_X86 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HOSTARCHVALUES_X86 = TMP_HOSTARCHVALUES_X86;\n/**\n * The constant map of values for HostArchValues.\n * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification.\n */\nexport var HostArchValues = \n/*#__PURE__*/ createConstMap([\n    TMP_HOSTARCHVALUES_AMD64,\n    TMP_HOSTARCHVALUES_ARM32,\n    TMP_HOSTARCHVALUES_ARM64,\n    TMP_HOSTARCHVALUES_IA64,\n    TMP_HOSTARCHVALUES_PPC32,\n    TMP_HOSTARCHVALUES_PPC64,\n    TMP_HOSTARCHVALUES_X86,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for OsTypeValues enum definition\n *\n * The operating system type.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_OSTYPEVALUES_WINDOWS = 'windows';\nvar TMP_OSTYPEVALUES_LINUX = 'linux';\nvar TMP_OSTYPEVALUES_DARWIN = 'darwin';\nvar TMP_OSTYPEVALUES_FREEBSD = 'freebsd';\nvar TMP_OSTYPEVALUES_NETBSD = 'netbsd';\nvar TMP_OSTYPEVALUES_OPENBSD = 'openbsd';\nvar TMP_OSTYPEVALUES_DRAGONFLYBSD = 'dragonflybsd';\nvar TMP_OSTYPEVALUES_HPUX = 'hpux';\nvar TMP_OSTYPEVALUES_AIX = 'aix';\nvar TMP_OSTYPEVALUES_SOLARIS = 'solaris';\nvar TMP_OSTYPEVALUES_Z_OS = 'z_os';\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_WINDOWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_WINDOWS = TMP_OSTYPEVALUES_WINDOWS;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_LINUX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_LINUX = TMP_OSTYPEVALUES_LINUX;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_DARWIN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_DARWIN = TMP_OSTYPEVALUES_DARWIN;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_FREEBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_FREEBSD = TMP_OSTYPEVALUES_FREEBSD;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_NETBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_NETBSD = TMP_OSTYPEVALUES_NETBSD;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_OPENBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_OPENBSD = TMP_OSTYPEVALUES_OPENBSD;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_DRAGONFLYBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_DRAGONFLYBSD = TMP_OSTYPEVALUES_DRAGONFLYBSD;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_HPUX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_HPUX = TMP_OSTYPEVALUES_HPUX;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_AIX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_AIX = TMP_OSTYPEVALUES_AIX;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_SOLARIS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_SOLARIS = TMP_OSTYPEVALUES_SOLARIS;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_Z_OS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_Z_OS = TMP_OSTYPEVALUES_Z_OS;\n/**\n * The constant map of values for OsTypeValues.\n * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification.\n */\nexport var OsTypeValues = \n/*#__PURE__*/ createConstMap([\n    TMP_OSTYPEVALUES_WINDOWS,\n    TMP_OSTYPEVALUES_LINUX,\n    TMP_OSTYPEVALUES_DARWIN,\n    TMP_OSTYPEVALUES_FREEBSD,\n    TMP_OSTYPEVALUES_NETBSD,\n    TMP_OSTYPEVALUES_OPENBSD,\n    TMP_OSTYPEVALUES_DRAGONFLYBSD,\n    TMP_OSTYPEVALUES_HPUX,\n    TMP_OSTYPEVALUES_AIX,\n    TMP_OSTYPEVALUES_SOLARIS,\n    TMP_OSTYPEVALUES_Z_OS,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for TelemetrySdkLanguageValues enum definition\n *\n * The language of the telemetry SDK.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_CPP = 'cpp';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET = 'dotnet';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG = 'erlang';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_GO = 'go';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA = 'java';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS = 'nodejs';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_PHP = 'php';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON = 'python';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY = 'ruby';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS = 'webjs';\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_CPP.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_CPP = TMP_TELEMETRYSDKLANGUAGEVALUES_CPP;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_DOTNET = TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_ERLANG = TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_GO.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_GO = TMP_TELEMETRYSDKLANGUAGEVALUES_GO;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_JAVA.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_JAVA = TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_NODEJS = TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PHP.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_PHP = TMP_TELEMETRYSDKLANGUAGEVALUES_PHP;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_PYTHON = TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_RUBY.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_RUBY = TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_WEBJS = TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS;\n/**\n * The constant map of values for TelemetrySdkLanguageValues.\n * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification.\n */\nexport var TelemetrySdkLanguageValues = \n/*#__PURE__*/ createConstMap([\n    TMP_TELEMETRYSDKLANGUAGEVALUES_CPP,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_GO,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_PHP,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS,\n]);\n//# sourceMappingURL=SemanticResourceAttributes.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only one-level deep at this point,\n * and should not cause problems for tree-shakers.\n */\nexport * from './SemanticResourceAttributes';\n//# sourceMappingURL=index.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n/**\n * Rate-limiting result, shows whether the lease was acquired or contains a rejection reason\n *\n * @example acquired\n * @example request_canceled\n */\nexport var ATTR_ASPNETCORE_RATE_LIMITING_RESULT = 'aspnetcore.rate_limiting.result';\n/**\n  * Enum value \"acquired\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n  */\nexport var ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED = \"acquired\";\n/**\n  * Enum value \"endpoint_limiter\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n  */\nexport var ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER = \"endpoint_limiter\";\n/**\n  * Enum value \"global_limiter\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n  */\nexport var ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER = \"global_limiter\";\n/**\n  * Enum value \"request_canceled\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n  */\nexport var ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED = \"request_canceled\";\n/**\n * The language of the telemetry SDK.\n */\nexport var ATTR_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language';\n/**\n  * Enum value \"cpp\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_CPP = \"cpp\";\n/**\n  * Enum value \"dotnet\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET = \"dotnet\";\n/**\n  * Enum value \"erlang\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG = \"erlang\";\n/**\n  * Enum value \"go\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_GO = \"go\";\n/**\n  * Enum value \"java\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_JAVA = \"java\";\n/**\n  * Enum value \"nodejs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS = \"nodejs\";\n/**\n  * Enum value \"php\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_PHP = \"php\";\n/**\n  * Enum value \"python\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON = \"python\";\n/**\n  * Enum value \"ruby\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_RUBY = \"ruby\";\n/**\n  * Enum value \"rust\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_RUST = \"rust\";\n/**\n  * Enum value \"swift\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT = \"swift\";\n/**\n  * Enum value \"webjs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS = \"webjs\";\n/**\n * The name of the telemetry SDK as defined above.\n *\n * @example opentelemetry\n *\n * @note The OpenTelemetry SDK **MUST** set the `telemetry.sdk.name` attribute to `opentelemetry`.\n * If another SDK, like a fork or a vendor-provided implementation, is used, this SDK **MUST** set the\n * `telemetry.sdk.name` attribute to the fully-qualified class or module name of this SDK's main entry point\n * or another suitable identifier depending on the language.\n * The identifier `opentelemetry` is reserved and **MUST NOT** be used in this case.\n * All custom identifiers **SHOULD** be stable across different versions of an implementation.\n */\nexport var ATTR_TELEMETRY_SDK_NAME = 'telemetry.sdk.name';\n/**\n * The version string of the telemetry SDK.\n *\n * @example 1.2.3\n */\nexport var ATTR_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version';\n/**\n * Full type name of the [`IExceptionHandler`](https://learn.microsoft.com/dotnet/api/microsoft.aspnetcore.diagnostics.iexceptionhandler) implementation that handled the exception.\n *\n * @example Contoso.MyHandler\n */\nexport var ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE = 'aspnetcore.diagnostics.handler.type';\n/**\n * ASP.NET Core exception middleware handling result\n *\n * @example handled\n * @example unhandled\n */\nexport var ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT = 'aspnetcore.diagnostics.exception.result';\n/**\n  * Enum value \"aborted\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n  */\nexport var ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED = \"aborted\";\n/**\n  * Enum value \"handled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n  */\nexport var ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED = \"handled\";\n/**\n  * Enum value \"skipped\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n  */\nexport var ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED = \"skipped\";\n/**\n  * Enum value \"unhandled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n  */\nexport var ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED = \"unhandled\";\n/**\n * Rate limiting policy name.\n *\n * @example fixed\n * @example sliding\n * @example token\n */\nexport var ATTR_ASPNETCORE_RATE_LIMITING_POLICY = 'aspnetcore.rate_limiting.policy';\n/**\n * Flag indicating if request was handled by the application pipeline.\n *\n * @example true\n */\nexport var ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED = 'aspnetcore.request.is_unhandled';\n/**\n * A value that indicates whether the matched route is a fallback route.\n *\n * @example true\n */\nexport var ATTR_ASPNETCORE_ROUTING_IS_FALLBACK = 'aspnetcore.routing.is_fallback';\n/**\n * Match result - success or failure\n *\n * @example success\n * @example failure\n */\nexport var ATTR_ASPNETCORE_ROUTING_MATCH_STATUS = 'aspnetcore.routing.match_status';\n/**\n  * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n  */\nexport var ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE = \"failure\";\n/**\n  * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n  */\nexport var ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS = \"success\";\n/**\n * Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example client.example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the server side, and when communicating through an intermediary, `client.address` **SHOULD** represent the client address behind any intermediaries,  for example proxies, if it's available.\n */\nexport var ATTR_CLIENT_ADDRESS = 'client.address';\n/**\n * Client port number.\n *\n * @example 65123\n *\n * @note When observed from the server side, and when communicating through an intermediary, `client.port` **SHOULD** represent the client port behind any intermediaries,  for example proxies, if it's available.\n */\nexport var ATTR_CLIENT_PORT = 'client.port';\n/**\n * Describes a class of error the operation ended with.\n *\n * @example timeout\n * @example java.net.UnknownHostException\n * @example server_certificate_invalid\n * @example 500\n *\n * @note The `error.type` **SHOULD** be predictable, and **SHOULD** have low cardinality.\n *\n * When `error.type` is set to a type (e.g., an exception type), its\n * canonical class name identifying the type within the artifact **SHOULD** be used.\n *\n * Instrumentations **SHOULD** document the list of errors they report.\n *\n * The cardinality of `error.type` within one instrumentation library **SHOULD** be low.\n * Telemetry consumers that aggregate data from multiple instrumentation libraries and applications\n * should be prepared for `error.type` to have high cardinality at query time when no\n * additional filters are applied.\n *\n * If the operation has completed successfully, instrumentations **SHOULD NOT** set `error.type`.\n *\n * If a specific domain defines its own set of error identifiers (such as HTTP or gRPC status codes),\n * it's **RECOMMENDED** to:\n *\n *   - Use a domain-specific attribute\n *   - Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not.\n */\nexport var ATTR_ERROR_TYPE = 'error.type';\n/**\n  * Enum value \"_OTHER\" for attribute {@link ATTR_ERROR_TYPE}.\n  */\nexport var ERROR_TYPE_VALUE_OTHER = \"_OTHER\";\n/**\n * **SHOULD** be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.\n *\n * @note An exception is considered to have escaped (or left) the scope of a span,\n * if that span is ended while the exception is still logically \"in flight\".\n * This may be actually \"in flight\" in some languages (e.g. if the exception\n * is passed to a Context manager's `__exit__` method in Python) but will\n * usually be caught at the point of recording the exception in most languages.\n *\n * It is usually not possible to determine at the point where an exception is thrown\n * whether it will escape the scope of a span.\n * However, it is trivial to know that an exception\n * will escape, if one checks for an active exception just before ending the span,\n * as done in the [example for recording span exceptions](https://opentelemetry.io/docs/specs/semconv/exceptions/exceptions-spans/#recording-an-exception).\n *\n * It follows that an exception may still escape the scope of the span\n * even if the `exception.escaped` attribute was not set or set to false,\n * since the event might have been recorded at a time where it was not\n * clear whether the exception will escape.\n */\nexport var ATTR_EXCEPTION_ESCAPED = 'exception.escaped';\n/**\n * The exception message.\n *\n * @example Division by zero\n * @example Can't convert 'int' object to str implicitly\n */\nexport var ATTR_EXCEPTION_MESSAGE = 'exception.message';\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n *\n * @example \"Exception in thread \"main\" java.lang.RuntimeException: Test exception\\\\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\\\\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\\\\n at com.example.GenerateTrace.main(GenerateTrace.java:5)\\\\n\"\n */\nexport var ATTR_EXCEPTION_STACKTRACE = 'exception.stacktrace';\n/**\n * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n *\n * @example java.net.ConnectException\n * @example OSError\n */\nexport var ATTR_EXCEPTION_TYPE = 'exception.type';\n/**\n * HTTP request headers, `<key>` being the normalized HTTP Header name (lowercase), the value being the header values.\n *\n * @example http.request.header.content-type=[\"application/json\"]\n * @example http.request.header.x-forwarded-for=[\"1.2.3.4\", \"1.2.3.5\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured. Including all request headers can be a security risk - explicit configuration helps avoid leaking sensitive information.\n * The `User-Agent` header is already captured in the `user_agent.original` attribute. Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended.\n * The attribute value **MUST** consist of either multiple header values as an array of strings or a single-item array containing a possibly comma-concatenated string, depending on the way the HTTP library provides access to headers.\n */\nexport var ATTR_HTTP_REQUEST_HEADER = function (key) { return \"http.request.header.\" + key; };\n/**\n * HTTP request method.\n *\n * @example GET\n * @example POST\n * @example HEAD\n *\n * @note HTTP request method value **SHOULD** be \"known\" to the instrumentation.\n * By default, this convention defines \"known\" methods as the ones listed in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods)\n * and the PATCH method defined in [RFC5789](https://www.rfc-editor.org/rfc/rfc5789.html).\n *\n * If the HTTP request method is not known to instrumentation, it **MUST** set the `http.request.method` attribute to `_OTHER`.\n *\n * If the HTTP instrumentation could end up converting valid HTTP request methods to `_OTHER`, then it **MUST** provide a way to override\n * the list of known HTTP methods. If this override is done via environment variable, then the environment variable **MUST** be named\n * OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated list of case-sensitive known HTTP methods\n * (this list **MUST** be a full override of the default known method, it is not a list of known methods in addition to the defaults).\n *\n * HTTP method names are case-sensitive and `http.request.method` attribute value **MUST** match a known HTTP method name exactly.\n * Instrumentations for specific web frameworks that consider HTTP methods to be case insensitive, **SHOULD** populate a canonical equivalent.\n * Tracing instrumentations that do so, **MUST** also set `http.request.method_original` to the original value.\n */\nexport var ATTR_HTTP_REQUEST_METHOD = 'http.request.method';\n/**\n  * Enum value \"_OTHER\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_OTHER = \"_OTHER\";\n/**\n  * Enum value \"CONNECT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_CONNECT = \"CONNECT\";\n/**\n  * Enum value \"DELETE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_DELETE = \"DELETE\";\n/**\n  * Enum value \"GET\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_GET = \"GET\";\n/**\n  * Enum value \"HEAD\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_HEAD = \"HEAD\";\n/**\n  * Enum value \"OPTIONS\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_OPTIONS = \"OPTIONS\";\n/**\n  * Enum value \"PATCH\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_PATCH = \"PATCH\";\n/**\n  * Enum value \"POST\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_POST = \"POST\";\n/**\n  * Enum value \"PUT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_PUT = \"PUT\";\n/**\n  * Enum value \"TRACE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_TRACE = \"TRACE\";\n/**\n * Original HTTP method sent by the client in the request line.\n *\n * @example GeT\n * @example ACL\n * @example foo\n */\nexport var ATTR_HTTP_REQUEST_METHOD_ORIGINAL = 'http.request.method_original';\n/**\n * The ordinal number of request resending attempt (for any reason, including redirects).\n *\n * @example 3\n *\n * @note The resend count **SHOULD** be updated each time an HTTP request gets resent by the client, regardless of what was the cause of the resending (e.g. redirection, authorization failure, 503 Server Unavailable, network issues, or any other).\n */\nexport var ATTR_HTTP_REQUEST_RESEND_COUNT = 'http.request.resend_count';\n/**\n * HTTP response headers, `<key>` being the normalized HTTP Header name (lowercase), the value being the header values.\n *\n * @example http.response.header.content-type=[\"application/json\"]\n * @example http.response.header.my-custom-header=[\"abc\", \"def\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured. Including all response headers can be a security risk - explicit configuration helps avoid leaking sensitive information.\n * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended.\n * The attribute value **MUST** consist of either multiple header values as an array of strings or a single-item array containing a possibly comma-concatenated string, depending on the way the HTTP library provides access to headers.\n */\nexport var ATTR_HTTP_RESPONSE_HEADER = function (key) { return \"http.response.header.\" + key; };\n/**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n *\n * @example 200\n */\nexport var ATTR_HTTP_RESPONSE_STATUS_CODE = 'http.response.status_code';\n/**\n * The matched route, that is, the path template in the format used by the respective server framework.\n *\n * @example /users/:userID?\n * @example {controller}/{action}/{id?}\n *\n * @note **MUST NOT** be populated when this is not supported by the HTTP server framework as the route attribute should have low-cardinality and the URI path can NOT substitute it.\n * **SHOULD** include the [application root](/docs/http/http-spans.md#http-server-definitions) if there is one.\n */\nexport var ATTR_HTTP_ROUTE = 'http.route';\n/**\n * Name of the garbage collector action.\n *\n * @example end of minor GC\n * @example end of major GC\n *\n * @note Garbage collector action is generally obtained via [GarbageCollectionNotificationInfo#getGcAction()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcAction()).\n */\nexport var ATTR_JVM_GC_ACTION = 'jvm.gc.action';\n/**\n * Name of the garbage collector.\n *\n * @example G1 Young Generation\n * @example G1 Old Generation\n *\n * @note Garbage collector name is generally obtained via [GarbageCollectionNotificationInfo#getGcName()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcName()).\n */\nexport var ATTR_JVM_GC_NAME = 'jvm.gc.name';\n/**\n * Name of the memory pool.\n *\n * @example G1 Old Gen\n * @example G1 Eden space\n * @example G1 Survivor Space\n *\n * @note Pool names are generally obtained via [MemoryPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getName()).\n */\nexport var ATTR_JVM_MEMORY_POOL_NAME = 'jvm.memory.pool.name';\n/**\n * The type of memory.\n *\n * @example heap\n * @example non_heap\n */\nexport var ATTR_JVM_MEMORY_TYPE = 'jvm.memory.type';\n/**\n  * Enum value \"heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n  */\nexport var JVM_MEMORY_TYPE_VALUE_HEAP = \"heap\";\n/**\n  * Enum value \"non_heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n  */\nexport var JVM_MEMORY_TYPE_VALUE_NON_HEAP = \"non_heap\";\n/**\n * Whether the thread is daemon or not.\n */\nexport var ATTR_JVM_THREAD_DAEMON = 'jvm.thread.daemon';\n/**\n * State of the thread.\n *\n * @example runnable\n * @example blocked\n */\nexport var ATTR_JVM_THREAD_STATE = 'jvm.thread.state';\n/**\n  * Enum value \"blocked\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n  */\nexport var JVM_THREAD_STATE_VALUE_BLOCKED = \"blocked\";\n/**\n  * Enum value \"new\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n  */\nexport var JVM_THREAD_STATE_VALUE_NEW = \"new\";\n/**\n  * Enum value \"runnable\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n  */\nexport var JVM_THREAD_STATE_VALUE_RUNNABLE = \"runnable\";\n/**\n  * Enum value \"terminated\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n  */\nexport var JVM_THREAD_STATE_VALUE_TERMINATED = \"terminated\";\n/**\n  * Enum value \"timed_waiting\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n  */\nexport var JVM_THREAD_STATE_VALUE_TIMED_WAITING = \"timed_waiting\";\n/**\n  * Enum value \"waiting\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n  */\nexport var JVM_THREAD_STATE_VALUE_WAITING = \"waiting\";\n/**\n * Local address of the network connection - IP address or Unix domain socket name.\n *\n * @example 10.1.2.80\n * @example /tmp/my.sock\n */\nexport var ATTR_NETWORK_LOCAL_ADDRESS = 'network.local.address';\n/**\n * Local port number of the network connection.\n *\n * @example 65123\n */\nexport var ATTR_NETWORK_LOCAL_PORT = 'network.local.port';\n/**\n * Peer address of the network connection - IP address or Unix domain socket name.\n *\n * @example 10.1.2.80\n * @example /tmp/my.sock\n */\nexport var ATTR_NETWORK_PEER_ADDRESS = 'network.peer.address';\n/**\n * Peer port number of the network connection.\n *\n * @example 65123\n */\nexport var ATTR_NETWORK_PEER_PORT = 'network.peer.port';\n/**\n * [OSI application layer](https://osi-model.com/application-layer/) or non-OSI equivalent.\n *\n * @example amqp\n * @example http\n * @example mqtt\n *\n * @note The value **SHOULD** be normalized to lowercase.\n */\nexport var ATTR_NETWORK_PROTOCOL_NAME = 'network.protocol.name';\n/**\n * The actual version of the protocol used for network communication.\n *\n * @example 1.1\n * @example 2\n *\n * @note If protocol version is subject to negotiation (for example using [ALPN](https://www.rfc-editor.org/rfc/rfc7301.html)), this attribute **SHOULD** be set to the negotiated version. If the actual protocol version is not known, this attribute **SHOULD NOT** be set.\n */\nexport var ATTR_NETWORK_PROTOCOL_VERSION = 'network.protocol.version';\n/**\n * [OSI transport layer](https://osi-model.com/transport-layer/) or [inter-process communication method](https://wikipedia.org/wiki/Inter-process_communication).\n *\n * @example tcp\n * @example udp\n *\n * @note The value **SHOULD** be normalized to lowercase.\n *\n * Consider always setting the transport when setting a port number, since\n * a port number is ambiguous without knowing the transport. For example\n * different processes could be listening on TCP port 12345 and UDP port 12345.\n */\nexport var ATTR_NETWORK_TRANSPORT = 'network.transport';\n/**\n  * Enum value \"pipe\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n  */\nexport var NETWORK_TRANSPORT_VALUE_PIPE = \"pipe\";\n/**\n  * Enum value \"quic\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n  */\nexport var NETWORK_TRANSPORT_VALUE_QUIC = \"quic\";\n/**\n  * Enum value \"tcp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n  */\nexport var NETWORK_TRANSPORT_VALUE_TCP = \"tcp\";\n/**\n  * Enum value \"udp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n  */\nexport var NETWORK_TRANSPORT_VALUE_UDP = \"udp\";\n/**\n  * Enum value \"unix\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n  */\nexport var NETWORK_TRANSPORT_VALUE_UNIX = \"unix\";\n/**\n * [OSI network layer](https://osi-model.com/network-layer/) or non-OSI equivalent.\n *\n * @example ipv4\n * @example ipv6\n *\n * @note The value **SHOULD** be normalized to lowercase.\n */\nexport var ATTR_NETWORK_TYPE = 'network.type';\n/**\n  * Enum value \"ipv4\" for attribute {@link ATTR_NETWORK_TYPE}.\n  */\nexport var NETWORK_TYPE_VALUE_IPV4 = \"ipv4\";\n/**\n  * Enum value \"ipv6\" for attribute {@link ATTR_NETWORK_TYPE}.\n  */\nexport var NETWORK_TYPE_VALUE_IPV6 = \"ipv6\";\n/**\n * The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP).\n *\n * @example io.opentelemetry.contrib.mongodb\n */\nexport var ATTR_OTEL_SCOPE_NAME = 'otel.scope.name';\n/**\n * The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP).\n *\n * @example 1.0.0\n */\nexport var ATTR_OTEL_SCOPE_VERSION = 'otel.scope.version';\n/**\n * Name of the code, either \"OK\" or \"ERROR\". **MUST NOT** be set if the status code is UNSET.\n */\nexport var ATTR_OTEL_STATUS_CODE = 'otel.status_code';\n/**\n  * Enum value \"ERROR\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n  */\nexport var OTEL_STATUS_CODE_VALUE_ERROR = \"ERROR\";\n/**\n  * Enum value \"OK\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n  */\nexport var OTEL_STATUS_CODE_VALUE_OK = \"OK\";\n/**\n * Description of the Status if it has a value, otherwise not set.\n *\n * @example resource not found\n */\nexport var ATTR_OTEL_STATUS_DESCRIPTION = 'otel.status_description';\n/**\n * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the client side, and when communicating through an intermediary, `server.address` **SHOULD** represent the server address behind any intermediaries, for example proxies, if it's available.\n */\nexport var ATTR_SERVER_ADDRESS = 'server.address';\n/**\n * Server port number.\n *\n * @example 80\n * @example 8080\n * @example 443\n *\n * @note When observed from the client side, and when communicating through an intermediary, `server.port` **SHOULD** represent the server port behind any intermediaries, for example proxies, if it's available.\n */\nexport var ATTR_SERVER_PORT = 'server.port';\n/**\n * Logical name of the service.\n *\n * @example shoppingcart\n *\n * @note **MUST** be the same for all instances of horizontally scaled services. If the value was not specified, SDKs **MUST** fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value **MUST** be set to `unknown_service`.\n */\nexport var ATTR_SERVICE_NAME = 'service.name';\n/**\n * The version string of the service API or implementation. The format is not defined by these conventions.\n *\n * @example 2.0.0\n * @example a01dbef8a\n */\nexport var ATTR_SERVICE_VERSION = 'service.version';\n/**\n * SignalR HTTP connection closure status.\n *\n * @example app_shutdown\n * @example timeout\n */\nexport var ATTR_SIGNALR_CONNECTION_STATUS = 'signalr.connection.status';\n/**\n  * Enum value \"app_shutdown\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n  */\nexport var SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN = \"app_shutdown\";\n/**\n  * Enum value \"normal_closure\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n  */\nexport var SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE = \"normal_closure\";\n/**\n  * Enum value \"timeout\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n  */\nexport var SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT = \"timeout\";\n/**\n * [SignalR transport type](https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/TransportProtocols.md)\n *\n * @example web_sockets\n * @example long_polling\n */\nexport var ATTR_SIGNALR_TRANSPORT = 'signalr.transport';\n/**\n  * Enum value \"long_polling\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n  */\nexport var SIGNALR_TRANSPORT_VALUE_LONG_POLLING = \"long_polling\";\n/**\n  * Enum value \"server_sent_events\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n  */\nexport var SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS = \"server_sent_events\";\n/**\n  * Enum value \"web_sockets\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n  */\nexport var SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS = \"web_sockets\";\n/**\n * The [URI fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component\n *\n * @example SemConv\n */\nexport var ATTR_URL_FRAGMENT = 'url.fragment';\n/**\n * Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986)\n *\n * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv\n * @example //localhost\n *\n * @note For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment is not transmitted over HTTP, but if it is known, it **SHOULD** be included nevertheless.\n * `url.full` **MUST NOT** contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case username and password **SHOULD** be redacted and attribute's value **SHOULD** be `https://REDACTED:REDACTED@www.example.com/`.\n * `url.full` **SHOULD** capture the absolute URL when it is available (or can be reconstructed). Sensitive content provided in `url.full` **SHOULD** be scrubbed when instrumentations can identify it.\n */\nexport var ATTR_URL_FULL = 'url.full';\n/**\n * The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component\n *\n * @example /search\n *\n * @note Sensitive content provided in `url.path` **SHOULD** be scrubbed when instrumentations can identify it.\n */\nexport var ATTR_URL_PATH = 'url.path';\n/**\n * The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component\n *\n * @example q=OpenTelemetry\n *\n * @note Sensitive content provided in `url.query` **SHOULD** be scrubbed when instrumentations can identify it.\n */\nexport var ATTR_URL_QUERY = 'url.query';\n/**\n * The [URI scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component identifying the used protocol.\n *\n * @example https\n * @example ftp\n * @example telnet\n */\nexport var ATTR_URL_SCHEME = 'url.scheme';\n/**\n * Value of the [HTTP User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) header sent by the client.\n *\n * @example CERN-LineMode/2.15 libwww/2.17b3\n * @example Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1\n * @example YourApp/1.0.0 grpc-java-okhttp/1.27.2\n */\nexport var ATTR_USER_AGENT_ORIGINAL = 'user_agent.original';\n//# sourceMappingURL=stable_attributes.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/register/stable/metrics.ts.j2\n//----------------------------------------------------------------------------------------------------------\n/**\n * Number of exceptions caught by exception handling middleware.\n *\n * @note Meter name: `Microsoft.AspNetCore.Diagnostics`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS = 'aspnetcore.diagnostics.exceptions';\n/**\n * Number of requests that are currently active on the server that hold a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES = 'aspnetcore.rate_limiting.active_request_leases';\n/**\n * Number of requests that are currently queued, waiting to acquire a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS = 'aspnetcore.rate_limiting.queued_requests';\n/**\n * The time the request spent in a queue waiting to acquire a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE = 'aspnetcore.rate_limiting.request.time_in_queue';\n/**\n * The duration of rate limiting lease held by requests on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION = 'aspnetcore.rate_limiting.request_lease.duration';\n/**\n * Number of requests that tried to acquire a rate limiting lease.\n *\n * @note Requests could be:\n *\n *   - Rejected by global or endpoint rate limiting policies\n *   - Canceled while waiting for the lease.\n *\n * Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS = 'aspnetcore.rate_limiting.requests';\n/**\n * Number of requests that were attempted to be matched to an endpoint.\n *\n * @note Meter name: `Microsoft.AspNetCore.Routing`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS = 'aspnetcore.routing.match_attempts';\n/**\n * Duration of HTTP client requests.\n */\nexport var METRIC_HTTP_CLIENT_REQUEST_DURATION = 'http.client.request.duration';\n/**\n * Duration of HTTP server requests.\n */\nexport var METRIC_HTTP_SERVER_REQUEST_DURATION = 'http.server.request.duration';\n/**\n * Number of classes currently loaded.\n */\nexport var METRIC_JVM_CLASS_COUNT = 'jvm.class.count';\n/**\n * Number of classes loaded since JVM start.\n */\nexport var METRIC_JVM_CLASS_LOADED = 'jvm.class.loaded';\n/**\n * Number of classes unloaded since JVM start.\n */\nexport var METRIC_JVM_CLASS_UNLOADED = 'jvm.class.unloaded';\n/**\n * Number of processors available to the Java virtual machine.\n */\nexport var METRIC_JVM_CPU_COUNT = 'jvm.cpu.count';\n/**\n * Recent CPU utilization for the process as reported by the JVM.\n *\n * @note The value range is [0.0,1.0]. This utilization is not defined as being for the specific interval since last measurement (unlike `system.cpu.utilization`). [Reference](https://docs.oracle.com/en/java/javase/17/docs/api/jdk.management/com/sun/management/OperatingSystemMXBean.html#getProcessCpuLoad()).\n */\nexport var METRIC_JVM_CPU_RECENT_UTILIZATION = 'jvm.cpu.recent_utilization';\n/**\n * CPU time used by the process as reported by the JVM.\n */\nexport var METRIC_JVM_CPU_TIME = 'jvm.cpu.time';\n/**\n * Duration of JVM garbage collection actions.\n */\nexport var METRIC_JVM_GC_DURATION = 'jvm.gc.duration';\n/**\n * Measure of memory committed.\n */\nexport var METRIC_JVM_MEMORY_COMMITTED = 'jvm.memory.committed';\n/**\n * Measure of max obtainable memory.\n */\nexport var METRIC_JVM_MEMORY_LIMIT = 'jvm.memory.limit';\n/**\n * Measure of memory used.\n */\nexport var METRIC_JVM_MEMORY_USED = 'jvm.memory.used';\n/**\n * Measure of memory used, as measured after the most recent garbage collection event on this pool.\n */\nexport var METRIC_JVM_MEMORY_USED_AFTER_LAST_GC = 'jvm.memory.used_after_last_gc';\n/**\n * Number of executing platform threads.\n */\nexport var METRIC_JVM_THREAD_COUNT = 'jvm.thread.count';\n/**\n * Number of connections that are currently active on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_ACTIVE_CONNECTIONS = 'kestrel.active_connections';\n/**\n * Number of TLS handshakes that are currently in progress on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES = 'kestrel.active_tls_handshakes';\n/**\n * The duration of connections on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_CONNECTION_DURATION = 'kestrel.connection.duration';\n/**\n * Number of connections that are currently queued and are waiting to start.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_QUEUED_CONNECTIONS = 'kestrel.queued_connections';\n/**\n * Number of HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are currently queued and are waiting to start.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_QUEUED_REQUESTS = 'kestrel.queued_requests';\n/**\n * Number of connections rejected by the server.\n *\n * @note Connections are rejected when the currently active count exceeds the value configured with `MaxConcurrentConnections`.\n * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_REJECTED_CONNECTIONS = 'kestrel.rejected_connections';\n/**\n * The duration of TLS handshakes on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_TLS_HANDSHAKE_DURATION = 'kestrel.tls_handshake.duration';\n/**\n * Number of connections that are currently upgraded (WebSockets). .\n *\n * @note The counter only tracks HTTP/1.1 connections.\n *\n * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_UPGRADED_CONNECTIONS = 'kestrel.upgraded_connections';\n/**\n * Number of connections that are currently active on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS = 'signalr.server.active_connections';\n/**\n * The duration of connections on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_SIGNALR_SERVER_CONNECTION_DURATION = 'signalr.server.connection.duration';\n//# sourceMappingURL=stable_metrics.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only two-levels deep, and\n * should not cause problems for tree-shakers.\n */\n// Deprecated. These are kept around for compatibility purposes\nexport * from './trace';\nexport * from './resource';\n// Use these instead\nexport * from './stable_attributes';\nexport * from './stable_metrics';\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExceptionEventName = void 0;\n// Event name definitions\nexports.ExceptionEventName = 'exception';\n//# sourceMappingURL=enums.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Span = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst enums_1 = require(\"./enums\");\n/**\n * This class represents a span.\n */\nclass Span {\n    /**\n     * Constructs a new Span instance.\n     *\n     * @deprecated calling Span constructor directly is not supported. Please use tracer.startSpan.\n     * */\n    constructor(parentTracer, context, spanName, spanContext, kind, parentSpanId, links = [], startTime, _deprecatedClock, // keeping this argument even though it is unused to ensure backwards compatibility\n    attributes) {\n        this.attributes = {};\n        this.links = [];\n        this.events = [];\n        this._droppedAttributesCount = 0;\n        this._droppedEventsCount = 0;\n        this._droppedLinksCount = 0;\n        this.status = {\n            code: api_1.SpanStatusCode.UNSET,\n        };\n        this.endTime = [0, 0];\n        this._ended = false;\n        this._duration = [-1, -1];\n        this.name = spanName;\n        this._spanContext = spanContext;\n        this.parentSpanId = parentSpanId;\n        this.kind = kind;\n        this.links = links;\n        const now = Date.now();\n        this._performanceStartTime = core_1.otperformance.now();\n        this._performanceOffset =\n            now - (this._performanceStartTime + (0, core_1.getTimeOrigin)());\n        this._startTimeProvided = startTime != null;\n        this.startTime = this._getTime(startTime !== null && startTime !== void 0 ? startTime : now);\n        this.resource = parentTracer.resource;\n        this.instrumentationLibrary = parentTracer.instrumentationLibrary;\n        this._spanLimits = parentTracer.getSpanLimits();\n        this._attributeValueLengthLimit =\n            this._spanLimits.attributeValueLengthLimit || 0;\n        if (attributes != null) {\n            this.setAttributes(attributes);\n        }\n        this._spanProcessor = parentTracer.getActiveSpanProcessor();\n        this._spanProcessor.onStart(this, context);\n    }\n    spanContext() {\n        return this._spanContext;\n    }\n    setAttribute(key, value) {\n        if (value == null || this._isSpanEnded())\n            return this;\n        if (key.length === 0) {\n            api_1.diag.warn(`Invalid attribute key: ${key}`);\n            return this;\n        }\n        if (!(0, core_1.isAttributeValue)(value)) {\n            api_1.diag.warn(`Invalid attribute value set for key: ${key}`);\n            return this;\n        }\n        if (Object.keys(this.attributes).length >=\n            this._spanLimits.attributeCountLimit &&\n            !Object.prototype.hasOwnProperty.call(this.attributes, key)) {\n            this._droppedAttributesCount++;\n            return this;\n        }\n        this.attributes[key] = this._truncateToSize(value);\n        return this;\n    }\n    setAttributes(attributes) {\n        for (const [k, v] of Object.entries(attributes)) {\n            this.setAttribute(k, v);\n        }\n        return this;\n    }\n    /**\n     *\n     * @param name Span Name\n     * @param [attributesOrStartTime] Span attributes or start time\n     *     if type is {@type TimeInput} and 3rd param is undefined\n     * @param [timeStamp] Specified time stamp for the event\n     */\n    addEvent(name, attributesOrStartTime, timeStamp) {\n        if (this._isSpanEnded())\n            return this;\n        if (this._spanLimits.eventCountLimit === 0) {\n            api_1.diag.warn('No events allowed.');\n            this._droppedEventsCount++;\n            return this;\n        }\n        if (this.events.length >= this._spanLimits.eventCountLimit) {\n            if (this._droppedEventsCount === 0) {\n                api_1.diag.debug('Dropping extra events.');\n            }\n            this.events.shift();\n            this._droppedEventsCount++;\n        }\n        if ((0, core_1.isTimeInput)(attributesOrStartTime)) {\n            if (!(0, core_1.isTimeInput)(timeStamp)) {\n                timeStamp = attributesOrStartTime;\n            }\n            attributesOrStartTime = undefined;\n        }\n        const attributes = (0, core_1.sanitizeAttributes)(attributesOrStartTime);\n        this.events.push({\n            name,\n            attributes,\n            time: this._getTime(timeStamp),\n            droppedAttributesCount: 0,\n        });\n        return this;\n    }\n    addLink(link) {\n        this.links.push(link);\n        return this;\n    }\n    addLinks(links) {\n        this.links.push(...links);\n        return this;\n    }\n    setStatus(status) {\n        if (this._isSpanEnded())\n            return this;\n        this.status = Object.assign({}, status);\n        // When using try-catch, the caught \"error\" is of type `any`. When then assigning `any` to `status.message`,\n        // TypeScript will not error. While this can happen during use of any API, it is more common on Span#setStatus()\n        // as it's likely used in a catch-block. Therefore, we validate if `status.message` is actually a string, null, or\n        // undefined to avoid an incorrect type causing issues downstream.\n        if (this.status.message != null && typeof status.message !== 'string') {\n            api_1.diag.warn(`Dropping invalid status.message of type '${typeof status.message}', expected 'string'`);\n            delete this.status.message;\n        }\n        return this;\n    }\n    updateName(name) {\n        if (this._isSpanEnded())\n            return this;\n        this.name = name;\n        return this;\n    }\n    end(endTime) {\n        if (this._isSpanEnded()) {\n            api_1.diag.error(`${this.name} ${this._spanContext.traceId}-${this._spanContext.spanId} - You can only call end() on a span once.`);\n            return;\n        }\n        this._ended = true;\n        this.endTime = this._getTime(endTime);\n        this._duration = (0, core_1.hrTimeDuration)(this.startTime, this.endTime);\n        if (this._duration[0] < 0) {\n            api_1.diag.warn('Inconsistent start and end time, startTime > endTime. Setting span duration to 0ms.', this.startTime, this.endTime);\n            this.endTime = this.startTime.slice();\n            this._duration = [0, 0];\n        }\n        if (this._droppedEventsCount > 0) {\n            api_1.diag.warn(`Dropped ${this._droppedEventsCount} events because eventCountLimit reached`);\n        }\n        this._spanProcessor.onEnd(this);\n    }\n    _getTime(inp) {\n        if (typeof inp === 'number' && inp <= core_1.otperformance.now()) {\n            // must be a performance timestamp\n            // apply correction and convert to hrtime\n            return (0, core_1.hrTime)(inp + this._performanceOffset);\n        }\n        if (typeof inp === 'number') {\n            return (0, core_1.millisToHrTime)(inp);\n        }\n        if (inp instanceof Date) {\n            return (0, core_1.millisToHrTime)(inp.getTime());\n        }\n        if ((0, core_1.isTimeInputHrTime)(inp)) {\n            return inp;\n        }\n        if (this._startTimeProvided) {\n            // if user provided a time for the start manually\n            // we can't use duration to calculate event/end times\n            return (0, core_1.millisToHrTime)(Date.now());\n        }\n        const msDuration = core_1.otperformance.now() - this._performanceStartTime;\n        return (0, core_1.addHrTimes)(this.startTime, (0, core_1.millisToHrTime)(msDuration));\n    }\n    isRecording() {\n        return this._ended === false;\n    }\n    recordException(exception, time) {\n        const attributes = {};\n        if (typeof exception === 'string') {\n            attributes[semantic_conventions_1.SEMATTRS_EXCEPTION_MESSAGE] = exception;\n        }\n        else if (exception) {\n            if (exception.code) {\n                attributes[semantic_conventions_1.SEMATTRS_EXCEPTION_TYPE] = exception.code.toString();\n            }\n            else if (exception.name) {\n                attributes[semantic_conventions_1.SEMATTRS_EXCEPTION_TYPE] = exception.name;\n            }\n            if (exception.message) {\n                attributes[semantic_conventions_1.SEMATTRS_EXCEPTION_MESSAGE] = exception.message;\n            }\n            if (exception.stack) {\n                attributes[semantic_conventions_1.SEMATTRS_EXCEPTION_STACKTRACE] = exception.stack;\n            }\n        }\n        // these are minimum requirements from spec\n        if (attributes[semantic_conventions_1.SEMATTRS_EXCEPTION_TYPE] ||\n            attributes[semantic_conventions_1.SEMATTRS_EXCEPTION_MESSAGE]) {\n            this.addEvent(enums_1.ExceptionEventName, attributes, time);\n        }\n        else {\n            api_1.diag.warn(`Failed to record an exception ${exception}`);\n        }\n    }\n    get duration() {\n        return this._duration;\n    }\n    get ended() {\n        return this._ended;\n    }\n    get droppedAttributesCount() {\n        return this._droppedAttributesCount;\n    }\n    get droppedEventsCount() {\n        return this._droppedEventsCount;\n    }\n    get droppedLinksCount() {\n        return this._droppedLinksCount;\n    }\n    _isSpanEnded() {\n        if (this._ended) {\n            api_1.diag.warn(`Can not execute the operation on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`);\n        }\n        return this._ended;\n    }\n    // Utility function to truncate given value within size\n    // for value type of string, will truncate to given limit\n    // for type of non-string, will return same value\n    _truncateToLimitUtil(value, limit) {\n        if (value.length <= limit) {\n            return value;\n        }\n        return value.substring(0, limit);\n    }\n    /**\n     * If the given attribute value is of type string and has more characters than given {@code attributeValueLengthLimit} then\n     * return string with truncated to {@code attributeValueLengthLimit} characters\n     *\n     * If the given attribute value is array of strings then\n     * return new array of strings with each element truncated to {@code attributeValueLengthLimit} characters\n     *\n     * Otherwise return same Attribute {@code value}\n     *\n     * @param value Attribute value\n     * @returns truncated attribute value if required, otherwise same value\n     */\n    _truncateToSize(value) {\n        const limit = this._attributeValueLengthLimit;\n        // Check limit\n        if (limit <= 0) {\n            // Negative values are invalid, so do not truncate\n            api_1.diag.warn(`Attribute value limit must be positive, got ${limit}`);\n            return value;\n        }\n        // String\n        if (typeof value === 'string') {\n            return this._truncateToLimitUtil(value, limit);\n        }\n        // Array of strings\n        if (Array.isArray(value)) {\n            return value.map(val => typeof val === 'string' ? this._truncateToLimitUtil(val, limit) : val);\n        }\n        // Other types, no need to apply value length limit\n        return value;\n    }\n}\nexports.Span = Span;\n//# sourceMappingURL=Span.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SamplingDecision = void 0;\n/**\n * A sampling decision that determines how a {@link Span} will be recorded\n * and collected.\n */\nvar SamplingDecision;\n(function (SamplingDecision) {\n    /**\n     * `Span.isRecording() === false`, span will not be recorded and all events\n     * and attributes will be dropped.\n     */\n    SamplingDecision[SamplingDecision[\"NOT_RECORD\"] = 0] = \"NOT_RECORD\";\n    /**\n     * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n     * MUST NOT be set.\n     */\n    SamplingDecision[SamplingDecision[\"RECORD\"] = 1] = \"RECORD\";\n    /**\n     * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n     * MUST be set.\n     */\n    SamplingDecision[SamplingDecision[\"RECORD_AND_SAMPLED\"] = 2] = \"RECORD_AND_SAMPLED\";\n})(SamplingDecision = exports.SamplingDecision || (exports.SamplingDecision = {}));\n//# sourceMappingURL=Sampler.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AlwaysOffSampler = void 0;\nconst Sampler_1 = require(\"../Sampler\");\n/** Sampler that samples no traces. */\nclass AlwaysOffSampler {\n    shouldSample() {\n        return {\n            decision: Sampler_1.SamplingDecision.NOT_RECORD,\n        };\n    }\n    toString() {\n        return 'AlwaysOffSampler';\n    }\n}\nexports.AlwaysOffSampler = AlwaysOffSampler;\n//# sourceMappingURL=AlwaysOffSampler.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AlwaysOnSampler = void 0;\nconst Sampler_1 = require(\"../Sampler\");\n/** Sampler that samples all traces. */\nclass AlwaysOnSampler {\n    shouldSample() {\n        return {\n            decision: Sampler_1.SamplingDecision.RECORD_AND_SAMPLED,\n        };\n    }\n    toString() {\n        return 'AlwaysOnSampler';\n    }\n}\nexports.AlwaysOnSampler = AlwaysOnSampler;\n//# sourceMappingURL=AlwaysOnSampler.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ParentBasedSampler = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst AlwaysOffSampler_1 = require(\"./AlwaysOffSampler\");\nconst AlwaysOnSampler_1 = require(\"./AlwaysOnSampler\");\n/**\n * A composite sampler that either respects the parent span's sampling decision\n * or delegates to `delegateSampler` for root spans.\n */\nclass ParentBasedSampler {\n    constructor(config) {\n        var _a, _b, _c, _d;\n        this._root = config.root;\n        if (!this._root) {\n            (0, core_1.globalErrorHandler)(new Error('ParentBasedSampler must have a root sampler configured'));\n            this._root = new AlwaysOnSampler_1.AlwaysOnSampler();\n        }\n        this._remoteParentSampled =\n            (_a = config.remoteParentSampled) !== null && _a !== void 0 ? _a : new AlwaysOnSampler_1.AlwaysOnSampler();\n        this._remoteParentNotSampled =\n            (_b = config.remoteParentNotSampled) !== null && _b !== void 0 ? _b : new AlwaysOffSampler_1.AlwaysOffSampler();\n        this._localParentSampled =\n            (_c = config.localParentSampled) !== null && _c !== void 0 ? _c : new AlwaysOnSampler_1.AlwaysOnSampler();\n        this._localParentNotSampled =\n            (_d = config.localParentNotSampled) !== null && _d !== void 0 ? _d : new AlwaysOffSampler_1.AlwaysOffSampler();\n    }\n    shouldSample(context, traceId, spanName, spanKind, attributes, links) {\n        const parentContext = api_1.trace.getSpanContext(context);\n        if (!parentContext || !(0, api_1.isSpanContextValid)(parentContext)) {\n            return this._root.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n        }\n        if (parentContext.isRemote) {\n            if (parentContext.traceFlags & api_1.TraceFlags.SAMPLED) {\n                return this._remoteParentSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n            }\n            return this._remoteParentNotSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n        }\n        if (parentContext.traceFlags & api_1.TraceFlags.SAMPLED) {\n            return this._localParentSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n        }\n        return this._localParentNotSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n    }\n    toString() {\n        return `ParentBased{root=${this._root.toString()}, remoteParentSampled=${this._remoteParentSampled.toString()}, remoteParentNotSampled=${this._remoteParentNotSampled.toString()}, localParentSampled=${this._localParentSampled.toString()}, localParentNotSampled=${this._localParentNotSampled.toString()}}`;\n    }\n}\nexports.ParentBasedSampler = ParentBasedSampler;\n//# sourceMappingURL=ParentBasedSampler.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceIdRatioBasedSampler = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst Sampler_1 = require(\"../Sampler\");\n/** Sampler that samples a given fraction of traces based of trace id deterministically. */\nclass TraceIdRatioBasedSampler {\n    constructor(_ratio = 0) {\n        this._ratio = _ratio;\n        this._ratio = this._normalize(_ratio);\n        this._upperBound = Math.floor(this._ratio * 0xffffffff);\n    }\n    shouldSample(context, traceId) {\n        return {\n            decision: (0, api_1.isValidTraceId)(traceId) && this._accumulate(traceId) < this._upperBound\n                ? Sampler_1.SamplingDecision.RECORD_AND_SAMPLED\n                : Sampler_1.SamplingDecision.NOT_RECORD,\n        };\n    }\n    toString() {\n        return `TraceIdRatioBased{${this._ratio}}`;\n    }\n    _normalize(ratio) {\n        if (typeof ratio !== 'number' || isNaN(ratio))\n            return 0;\n        return ratio >= 1 ? 1 : ratio <= 0 ? 0 : ratio;\n    }\n    _accumulate(traceId) {\n        let accumulation = 0;\n        for (let i = 0; i < traceId.length / 8; i++) {\n            const pos = i * 8;\n            const part = parseInt(traceId.slice(pos, pos + 8), 16);\n            accumulation = (accumulation ^ part) >>> 0;\n        }\n        return accumulation;\n    }\n}\nexports.TraceIdRatioBasedSampler = TraceIdRatioBasedSampler;\n//# sourceMappingURL=TraceIdRatioBasedSampler.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildSamplerFromEnv = exports.loadDefaultConfig = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst AlwaysOffSampler_1 = require(\"./sampler/AlwaysOffSampler\");\nconst AlwaysOnSampler_1 = require(\"./sampler/AlwaysOnSampler\");\nconst ParentBasedSampler_1 = require(\"./sampler/ParentBasedSampler\");\nconst TraceIdRatioBasedSampler_1 = require(\"./sampler/TraceIdRatioBasedSampler\");\nconst FALLBACK_OTEL_TRACES_SAMPLER = core_1.TracesSamplerValues.AlwaysOn;\nconst DEFAULT_RATIO = 1;\n/**\n * Load default configuration. For fields with primitive values, any user-provided\n * value will override the corresponding default value. For fields with\n * non-primitive values (like `spanLimits`), the user-provided value will be\n * used to extend the default value.\n */\n// object needs to be wrapped in this function and called when needed otherwise\n// envs are parsed before tests are ran - causes tests using these envs to fail\nfunction loadDefaultConfig() {\n    const env = (0, core_1.getEnv)();\n    return {\n        sampler: buildSamplerFromEnv(env),\n        forceFlushTimeoutMillis: 30000,\n        generalLimits: {\n            attributeValueLengthLimit: env.OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT,\n            attributeCountLimit: env.OTEL_ATTRIBUTE_COUNT_LIMIT,\n        },\n        spanLimits: {\n            attributeValueLengthLimit: env.OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT,\n            attributeCountLimit: env.OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT,\n            linkCountLimit: env.OTEL_SPAN_LINK_COUNT_LIMIT,\n            eventCountLimit: env.OTEL_SPAN_EVENT_COUNT_LIMIT,\n            attributePerEventCountLimit: env.OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT,\n            attributePerLinkCountLimit: env.OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT,\n        },\n        mergeResourceWithDefaults: true,\n    };\n}\nexports.loadDefaultConfig = loadDefaultConfig;\n/**\n * Based on environment, builds a sampler, complies with specification.\n * @param environment optional, by default uses getEnv(), but allows passing a value to reuse parsed environment\n */\nfunction buildSamplerFromEnv(environment = (0, core_1.getEnv)()) {\n    switch (environment.OTEL_TRACES_SAMPLER) {\n        case core_1.TracesSamplerValues.AlwaysOn:\n            return new AlwaysOnSampler_1.AlwaysOnSampler();\n        case core_1.TracesSamplerValues.AlwaysOff:\n            return new AlwaysOffSampler_1.AlwaysOffSampler();\n        case core_1.TracesSamplerValues.ParentBasedAlwaysOn:\n            return new ParentBasedSampler_1.ParentBasedSampler({\n                root: new AlwaysOnSampler_1.AlwaysOnSampler(),\n            });\n        case core_1.TracesSamplerValues.ParentBasedAlwaysOff:\n            return new ParentBasedSampler_1.ParentBasedSampler({\n                root: new AlwaysOffSampler_1.AlwaysOffSampler(),\n            });\n        case core_1.TracesSamplerValues.TraceIdRatio:\n            return new TraceIdRatioBasedSampler_1.TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv(environment));\n        case core_1.TracesSamplerValues.ParentBasedTraceIdRatio:\n            return new ParentBasedSampler_1.ParentBasedSampler({\n                root: new TraceIdRatioBasedSampler_1.TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv(environment)),\n            });\n        default:\n            api_1.diag.error(`OTEL_TRACES_SAMPLER value \"${environment.OTEL_TRACES_SAMPLER} invalid, defaulting to ${FALLBACK_OTEL_TRACES_SAMPLER}\".`);\n            return new AlwaysOnSampler_1.AlwaysOnSampler();\n    }\n}\nexports.buildSamplerFromEnv = buildSamplerFromEnv;\nfunction getSamplerProbabilityFromEnv(environment) {\n    if (environment.OTEL_TRACES_SAMPLER_ARG === undefined ||\n        environment.OTEL_TRACES_SAMPLER_ARG === '') {\n        api_1.diag.error(`OTEL_TRACES_SAMPLER_ARG is blank, defaulting to ${DEFAULT_RATIO}.`);\n        return DEFAULT_RATIO;\n    }\n    const probability = Number(environment.OTEL_TRACES_SAMPLER_ARG);\n    if (isNaN(probability)) {\n        api_1.diag.error(`OTEL_TRACES_SAMPLER_ARG=${environment.OTEL_TRACES_SAMPLER_ARG} was given, but it is invalid, defaulting to ${DEFAULT_RATIO}.`);\n        return DEFAULT_RATIO;\n    }\n    if (probability < 0 || probability > 1) {\n        api_1.diag.error(`OTEL_TRACES_SAMPLER_ARG=${environment.OTEL_TRACES_SAMPLER_ARG} was given, but it is out of range ([0..1]), defaulting to ${DEFAULT_RATIO}.`);\n        return DEFAULT_RATIO;\n    }\n    return probability;\n}\n//# sourceMappingURL=config.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reconfigureLimits = exports.mergeConfig = void 0;\nconst config_1 = require(\"./config\");\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * Function to merge Default configuration (as specified in './config') with\n * user provided configurations.\n */\nfunction mergeConfig(userConfig) {\n    const perInstanceDefaults = {\n        sampler: (0, config_1.buildSamplerFromEnv)(),\n    };\n    const DEFAULT_CONFIG = (0, config_1.loadDefaultConfig)();\n    const target = Object.assign({}, DEFAULT_CONFIG, perInstanceDefaults, userConfig);\n    target.generalLimits = Object.assign({}, DEFAULT_CONFIG.generalLimits, userConfig.generalLimits || {});\n    target.spanLimits = Object.assign({}, DEFAULT_CONFIG.spanLimits, userConfig.spanLimits || {});\n    return target;\n}\nexports.mergeConfig = mergeConfig;\n/**\n * When general limits are provided and model specific limits are not,\n * configures the model specific limits by using the values from the general ones.\n * @param userConfig User provided tracer configuration\n */\nfunction reconfigureLimits(userConfig) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n    const spanLimits = Object.assign({}, userConfig.spanLimits);\n    const parsedEnvConfig = (0, core_1.getEnvWithoutDefaults)();\n    /**\n     * Reassign span attribute count limit to use first non null value defined by user or use default value\n     */\n    spanLimits.attributeCountLimit =\n        (_f = (_e = (_d = (_b = (_a = userConfig.spanLimits) === null || _a === void 0 ? void 0 : _a.attributeCountLimit) !== null && _b !== void 0 ? _b : (_c = userConfig.generalLimits) === null || _c === void 0 ? void 0 : _c.attributeCountLimit) !== null && _d !== void 0 ? _d : parsedEnvConfig.OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT) !== null && _e !== void 0 ? _e : parsedEnvConfig.OTEL_ATTRIBUTE_COUNT_LIMIT) !== null && _f !== void 0 ? _f : core_1.DEFAULT_ATTRIBUTE_COUNT_LIMIT;\n    /**\n     * Reassign span attribute value length limit to use first non null value defined by user or use default value\n     */\n    spanLimits.attributeValueLengthLimit =\n        (_m = (_l = (_k = (_h = (_g = userConfig.spanLimits) === null || _g === void 0 ? void 0 : _g.attributeValueLengthLimit) !== null && _h !== void 0 ? _h : (_j = userConfig.generalLimits) === null || _j === void 0 ? void 0 : _j.attributeValueLengthLimit) !== null && _k !== void 0 ? _k : parsedEnvConfig.OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT) !== null && _l !== void 0 ? _l : parsedEnvConfig.OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT) !== null && _m !== void 0 ? _m : core_1.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT;\n    return Object.assign({}, userConfig, { spanLimits });\n}\nexports.reconfigureLimits = reconfigureLimits;\n//# sourceMappingURL=utility.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BatchSpanProcessorBase = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * Implementation of the {@link SpanProcessor} that batches spans exported by\n * the SDK then pushes them to the exporter pipeline.\n */\nclass BatchSpanProcessorBase {\n    constructor(_exporter, config) {\n        this._exporter = _exporter;\n        this._isExporting = false;\n        this._finishedSpans = [];\n        this._droppedSpansCount = 0;\n        const env = (0, core_1.getEnv)();\n        this._maxExportBatchSize =\n            typeof (config === null || config === void 0 ? void 0 : config.maxExportBatchSize) === 'number'\n                ? config.maxExportBatchSize\n                : env.OTEL_BSP_MAX_EXPORT_BATCH_SIZE;\n        this._maxQueueSize =\n            typeof (config === null || config === void 0 ? void 0 : config.maxQueueSize) === 'number'\n                ? config.maxQueueSize\n                : env.OTEL_BSP_MAX_QUEUE_SIZE;\n        this._scheduledDelayMillis =\n            typeof (config === null || config === void 0 ? void 0 : config.scheduledDelayMillis) === 'number'\n                ? config.scheduledDelayMillis\n                : env.OTEL_BSP_SCHEDULE_DELAY;\n        this._exportTimeoutMillis =\n            typeof (config === null || config === void 0 ? void 0 : config.exportTimeoutMillis) === 'number'\n                ? config.exportTimeoutMillis\n                : env.OTEL_BSP_EXPORT_TIMEOUT;\n        this._shutdownOnce = new core_1.BindOnceFuture(this._shutdown, this);\n        if (this._maxExportBatchSize > this._maxQueueSize) {\n            api_1.diag.warn('BatchSpanProcessor: maxExportBatchSize must be smaller or equal to maxQueueSize, setting maxExportBatchSize to match maxQueueSize');\n            this._maxExportBatchSize = this._maxQueueSize;\n        }\n    }\n    forceFlush() {\n        if (this._shutdownOnce.isCalled) {\n            return this._shutdownOnce.promise;\n        }\n        return this._flushAll();\n    }\n    // does nothing.\n    onStart(_span, _parentContext) { }\n    onEnd(span) {\n        if (this._shutdownOnce.isCalled) {\n            return;\n        }\n        if ((span.spanContext().traceFlags & api_1.TraceFlags.SAMPLED) === 0) {\n            return;\n        }\n        this._addToBuffer(span);\n    }\n    shutdown() {\n        return this._shutdownOnce.call();\n    }\n    _shutdown() {\n        return Promise.resolve()\n            .then(() => {\n            return this.onShutdown();\n        })\n            .then(() => {\n            return this._flushAll();\n        })\n            .then(() => {\n            return this._exporter.shutdown();\n        });\n    }\n    /** Add a span in the buffer. */\n    _addToBuffer(span) {\n        if (this._finishedSpans.length >= this._maxQueueSize) {\n            // limit reached, drop span\n            if (this._droppedSpansCount === 0) {\n                api_1.diag.debug('maxQueueSize reached, dropping spans');\n            }\n            this._droppedSpansCount++;\n            return;\n        }\n        if (this._droppedSpansCount > 0) {\n            // some spans were dropped, log once with count of spans dropped\n            api_1.diag.warn(`Dropped ${this._droppedSpansCount} spans because maxQueueSize reached`);\n            this._droppedSpansCount = 0;\n        }\n        this._finishedSpans.push(span);\n        this._maybeStartTimer();\n    }\n    /**\n     * Send all spans to the exporter respecting the batch size limit\n     * This function is used only on forceFlush or shutdown,\n     * for all other cases _flush should be used\n     * */\n    _flushAll() {\n        return new Promise((resolve, reject) => {\n            const promises = [];\n            // calculate number of batches\n            const count = Math.ceil(this._finishedSpans.length / this._maxExportBatchSize);\n            for (let i = 0, j = count; i < j; i++) {\n                promises.push(this._flushOneBatch());\n            }\n            Promise.all(promises)\n                .then(() => {\n                resolve();\n            })\n                .catch(reject);\n        });\n    }\n    _flushOneBatch() {\n        this._clearTimer();\n        if (this._finishedSpans.length === 0) {\n            return Promise.resolve();\n        }\n        return new Promise((resolve, reject) => {\n            const timer = setTimeout(() => {\n                // don't wait anymore for export, this way the next batch can start\n                reject(new Error('Timeout'));\n            }, this._exportTimeoutMillis);\n            // prevent downstream exporter calls from generating spans\n            api_1.context.with((0, core_1.suppressTracing)(api_1.context.active()), () => {\n                // Reset the finished spans buffer here because the next invocations of the _flush method\n                // could pass the same finished spans to the exporter if the buffer is cleared\n                // outside the execution of this callback.\n                let spans;\n                if (this._finishedSpans.length <= this._maxExportBatchSize) {\n                    spans = this._finishedSpans;\n                    this._finishedSpans = [];\n                }\n                else {\n                    spans = this._finishedSpans.splice(0, this._maxExportBatchSize);\n                }\n                const doExport = () => this._exporter.export(spans, result => {\n                    var _a;\n                    clearTimeout(timer);\n                    if (result.code === core_1.ExportResultCode.SUCCESS) {\n                        resolve();\n                    }\n                    else {\n                        reject((_a = result.error) !== null && _a !== void 0 ? _a : new Error('BatchSpanProcessor: span export failed'));\n                    }\n                });\n                let pendingResources = null;\n                for (let i = 0, len = spans.length; i < len; i++) {\n                    const span = spans[i];\n                    if (span.resource.asyncAttributesPending &&\n                        span.resource.waitForAsyncAttributes) {\n                        pendingResources !== null && pendingResources !== void 0 ? pendingResources : (pendingResources = []);\n                        pendingResources.push(span.resource.waitForAsyncAttributes());\n                    }\n                }\n                // Avoid scheduling a promise to make the behavior more predictable and easier to test\n                if (pendingResources === null) {\n                    doExport();\n                }\n                else {\n                    Promise.all(pendingResources).then(doExport, err => {\n                        (0, core_1.globalErrorHandler)(err);\n                        reject(err);\n                    });\n                }\n            });\n        });\n    }\n    _maybeStartTimer() {\n        if (this._isExporting)\n            return;\n        const flush = () => {\n            this._isExporting = true;\n            this._flushOneBatch()\n                .finally(() => {\n                this._isExporting = false;\n                if (this._finishedSpans.length > 0) {\n                    this._clearTimer();\n                    this._maybeStartTimer();\n                }\n            })\n                .catch(e => {\n                this._isExporting = false;\n                (0, core_1.globalErrorHandler)(e);\n            });\n        };\n        // we only wait if the queue doesn't have enough elements yet\n        if (this._finishedSpans.length >= this._maxExportBatchSize) {\n            return flush();\n        }\n        if (this._timer !== undefined)\n            return;\n        this._timer = setTimeout(() => flush(), this._scheduledDelayMillis);\n        (0, core_1.unrefTimer)(this._timer);\n    }\n    _clearTimer() {\n        if (this._timer !== undefined) {\n            clearTimeout(this._timer);\n            this._timer = undefined;\n        }\n    }\n}\nexports.BatchSpanProcessorBase = BatchSpanProcessorBase;\n//# sourceMappingURL=BatchSpanProcessorBase.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BatchSpanProcessor = void 0;\nconst BatchSpanProcessorBase_1 = require(\"../../../export/BatchSpanProcessorBase\");\nclass BatchSpanProcessor extends BatchSpanProcessorBase_1.BatchSpanProcessorBase {\n    onShutdown() { }\n}\nexports.BatchSpanProcessor = BatchSpanProcessor;\n//# sourceMappingURL=BatchSpanProcessor.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RandomIdGenerator = void 0;\nconst SPAN_ID_BYTES = 8;\nconst TRACE_ID_BYTES = 16;\nclass RandomIdGenerator {\n    constructor() {\n        /**\n         * Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex\n         * characters corresponding to 128 bits.\n         */\n        this.generateTraceId = getIdGenerator(TRACE_ID_BYTES);\n        /**\n         * Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex\n         * characters corresponding to 64 bits.\n         */\n        this.generateSpanId = getIdGenerator(SPAN_ID_BYTES);\n    }\n}\nexports.RandomIdGenerator = RandomIdGenerator;\nconst SHARED_BUFFER = Buffer.allocUnsafe(TRACE_ID_BYTES);\nfunction getIdGenerator(bytes) {\n    return function generateId() {\n        for (let i = 0; i < bytes / 4; i++) {\n            // unsigned right shift drops decimal part of the number\n            // it is required because if a number between 2**32 and 2**32 - 1 is generated, an out of range error is thrown by writeUInt32BE\n            SHARED_BUFFER.writeUInt32BE((Math.random() * 2 ** 32) >>> 0, i * 4);\n        }\n        // If buffer is all 0, set the last byte to 1 to guarantee a valid w3c id is generated\n        for (let i = 0; i < bytes; i++) {\n            if (SHARED_BUFFER[i] > 0) {\n                break;\n            }\n            else if (i === bytes - 1) {\n                SHARED_BUFFER[bytes - 1] = 1;\n            }\n        }\n        return SHARED_BUFFER.toString('hex', 0, bytes);\n    };\n}\n//# sourceMappingURL=RandomIdGenerator.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RandomIdGenerator = exports.BatchSpanProcessor = void 0;\nvar BatchSpanProcessor_1 = require(\"./export/BatchSpanProcessor\");\nObject.defineProperty(exports, \"BatchSpanProcessor\", { enumerable: true, get: function () { return BatchSpanProcessor_1.BatchSpanProcessor; } });\nvar RandomIdGenerator_1 = require(\"./RandomIdGenerator\");\nObject.defineProperty(exports, \"RandomIdGenerator\", { enumerable: true, get: function () { return RandomIdGenerator_1.RandomIdGenerator; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RandomIdGenerator = exports.BatchSpanProcessor = void 0;\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"BatchSpanProcessor\", { enumerable: true, get: function () { return node_1.BatchSpanProcessor; } });\nObject.defineProperty(exports, \"RandomIdGenerator\", { enumerable: true, get: function () { return node_1.RandomIdGenerator; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Tracer = void 0;\nconst api = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst Span_1 = require(\"./Span\");\nconst utility_1 = require(\"./utility\");\nconst platform_1 = require(\"./platform\");\n/**\n * This class represents a basic tracer.\n */\nclass Tracer {\n    /**\n     * Constructs a new Tracer instance.\n     */\n    constructor(instrumentationLibrary, config, _tracerProvider) {\n        this._tracerProvider = _tracerProvider;\n        const localConfig = (0, utility_1.mergeConfig)(config);\n        this._sampler = localConfig.sampler;\n        this._generalLimits = localConfig.generalLimits;\n        this._spanLimits = localConfig.spanLimits;\n        this._idGenerator = config.idGenerator || new platform_1.RandomIdGenerator();\n        this.resource = _tracerProvider.resource;\n        this.instrumentationLibrary = instrumentationLibrary;\n    }\n    /**\n     * Starts a new Span or returns the default NoopSpan based on the sampling\n     * decision.\n     */\n    startSpan(name, options = {}, context = api.context.active()) {\n        var _a, _b, _c;\n        // remove span from context in case a root span is requested via options\n        if (options.root) {\n            context = api.trace.deleteSpan(context);\n        }\n        const parentSpan = api.trace.getSpan(context);\n        if ((0, core_1.isTracingSuppressed)(context)) {\n            api.diag.debug('Instrumentation suppressed, returning Noop Span');\n            const nonRecordingSpan = api.trace.wrapSpanContext(api.INVALID_SPAN_CONTEXT);\n            return nonRecordingSpan;\n        }\n        const parentSpanContext = parentSpan === null || parentSpan === void 0 ? void 0 : parentSpan.spanContext();\n        const spanId = this._idGenerator.generateSpanId();\n        let traceId;\n        let traceState;\n        let parentSpanId;\n        if (!parentSpanContext ||\n            !api.trace.isSpanContextValid(parentSpanContext)) {\n            // New root span.\n            traceId = this._idGenerator.generateTraceId();\n        }\n        else {\n            // New child span.\n            traceId = parentSpanContext.traceId;\n            traceState = parentSpanContext.traceState;\n            parentSpanId = parentSpanContext.spanId;\n        }\n        const spanKind = (_a = options.kind) !== null && _a !== void 0 ? _a : api.SpanKind.INTERNAL;\n        const links = ((_b = options.links) !== null && _b !== void 0 ? _b : []).map(link => {\n            return {\n                context: link.context,\n                attributes: (0, core_1.sanitizeAttributes)(link.attributes),\n            };\n        });\n        const attributes = (0, core_1.sanitizeAttributes)(options.attributes);\n        // make sampling decision\n        const samplingResult = this._sampler.shouldSample(context, traceId, name, spanKind, attributes, links);\n        traceState = (_c = samplingResult.traceState) !== null && _c !== void 0 ? _c : traceState;\n        const traceFlags = samplingResult.decision === api.SamplingDecision.RECORD_AND_SAMPLED\n            ? api.TraceFlags.SAMPLED\n            : api.TraceFlags.NONE;\n        const spanContext = { traceId, spanId, traceFlags, traceState };\n        if (samplingResult.decision === api.SamplingDecision.NOT_RECORD) {\n            api.diag.debug('Recording is off, propagating context in a non-recording span');\n            const nonRecordingSpan = api.trace.wrapSpanContext(spanContext);\n            return nonRecordingSpan;\n        }\n        // Set initial span attributes. The attributes object may have been mutated\n        // by the sampler, so we sanitize the merged attributes before setting them.\n        const initAttributes = (0, core_1.sanitizeAttributes)(Object.assign(attributes, samplingResult.attributes));\n        const span = new Span_1.Span(this, context, name, spanContext, spanKind, parentSpanId, links, options.startTime, undefined, initAttributes);\n        return span;\n    }\n    startActiveSpan(name, arg2, arg3, arg4) {\n        let opts;\n        let ctx;\n        let fn;\n        if (arguments.length < 2) {\n            return;\n        }\n        else if (arguments.length === 2) {\n            fn = arg2;\n        }\n        else if (arguments.length === 3) {\n            opts = arg2;\n            fn = arg3;\n        }\n        else {\n            opts = arg2;\n            ctx = arg3;\n            fn = arg4;\n        }\n        const parentContext = ctx !== null && ctx !== void 0 ? ctx : api.context.active();\n        const span = this.startSpan(name, opts, parentContext);\n        const contextWithSpanSet = api.trace.setSpan(parentContext, span);\n        return api.context.with(contextWithSpanSet, fn, undefined, span);\n    }\n    /** Returns the active {@link GeneralLimits}. */\n    getGeneralLimits() {\n        return this._generalLimits;\n    }\n    /** Returns the active {@link SpanLimits}. */\n    getSpanLimits() {\n        return this._spanLimits;\n    }\n    getActiveSpanProcessor() {\n        return this._tracerProvider.getActiveSpanProcessor();\n    }\n}\nexports.Tracer = Tracer;\n//# sourceMappingURL=Tracer.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Creates a const map from the given values\n * @param values - An array of values to be used as keys and values in the map.\n * @returns A populated version of the map with the values and keys derived from the values.\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function createConstMap(values) {\n    // eslint-disable-next-line prefer-const, @typescript-eslint/no-explicit-any\n    var res = {};\n    var len = values.length;\n    for (var lp = 0; lp < len; lp++) {\n        var val = values[lp];\n        if (val) {\n            res[String(val).toUpperCase().replace(/[-.]/g, '_')] = val;\n        }\n    }\n    return res;\n}\n//# sourceMappingURL=utils.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createConstMap } from '../internal/utils';\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticAttributes\n//----------------------------------------------------------------------------------------------------------\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_AWS_LAMBDA_INVOKED_ARN = 'aws.lambda.invoked_arn';\nvar TMP_DB_SYSTEM = 'db.system';\nvar TMP_DB_CONNECTION_STRING = 'db.connection_string';\nvar TMP_DB_USER = 'db.user';\nvar TMP_DB_JDBC_DRIVER_CLASSNAME = 'db.jdbc.driver_classname';\nvar TMP_DB_NAME = 'db.name';\nvar TMP_DB_STATEMENT = 'db.statement';\nvar TMP_DB_OPERATION = 'db.operation';\nvar TMP_DB_MSSQL_INSTANCE_NAME = 'db.mssql.instance_name';\nvar TMP_DB_CASSANDRA_KEYSPACE = 'db.cassandra.keyspace';\nvar TMP_DB_CASSANDRA_PAGE_SIZE = 'db.cassandra.page_size';\nvar TMP_DB_CASSANDRA_CONSISTENCY_LEVEL = 'db.cassandra.consistency_level';\nvar TMP_DB_CASSANDRA_TABLE = 'db.cassandra.table';\nvar TMP_DB_CASSANDRA_IDEMPOTENCE = 'db.cassandra.idempotence';\nvar TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'db.cassandra.speculative_execution_count';\nvar TMP_DB_CASSANDRA_COORDINATOR_ID = 'db.cassandra.coordinator.id';\nvar TMP_DB_CASSANDRA_COORDINATOR_DC = 'db.cassandra.coordinator.dc';\nvar TMP_DB_HBASE_NAMESPACE = 'db.hbase.namespace';\nvar TMP_DB_REDIS_DATABASE_INDEX = 'db.redis.database_index';\nvar TMP_DB_MONGODB_COLLECTION = 'db.mongodb.collection';\nvar TMP_DB_SQL_TABLE = 'db.sql.table';\nvar TMP_EXCEPTION_TYPE = 'exception.type';\nvar TMP_EXCEPTION_MESSAGE = 'exception.message';\nvar TMP_EXCEPTION_STACKTRACE = 'exception.stacktrace';\nvar TMP_EXCEPTION_ESCAPED = 'exception.escaped';\nvar TMP_FAAS_TRIGGER = 'faas.trigger';\nvar TMP_FAAS_EXECUTION = 'faas.execution';\nvar TMP_FAAS_DOCUMENT_COLLECTION = 'faas.document.collection';\nvar TMP_FAAS_DOCUMENT_OPERATION = 'faas.document.operation';\nvar TMP_FAAS_DOCUMENT_TIME = 'faas.document.time';\nvar TMP_FAAS_DOCUMENT_NAME = 'faas.document.name';\nvar TMP_FAAS_TIME = 'faas.time';\nvar TMP_FAAS_CRON = 'faas.cron';\nvar TMP_FAAS_COLDSTART = 'faas.coldstart';\nvar TMP_FAAS_INVOKED_NAME = 'faas.invoked_name';\nvar TMP_FAAS_INVOKED_PROVIDER = 'faas.invoked_provider';\nvar TMP_FAAS_INVOKED_REGION = 'faas.invoked_region';\nvar TMP_NET_TRANSPORT = 'net.transport';\nvar TMP_NET_PEER_IP = 'net.peer.ip';\nvar TMP_NET_PEER_PORT = 'net.peer.port';\nvar TMP_NET_PEER_NAME = 'net.peer.name';\nvar TMP_NET_HOST_IP = 'net.host.ip';\nvar TMP_NET_HOST_PORT = 'net.host.port';\nvar TMP_NET_HOST_NAME = 'net.host.name';\nvar TMP_NET_HOST_CONNECTION_TYPE = 'net.host.connection.type';\nvar TMP_NET_HOST_CONNECTION_SUBTYPE = 'net.host.connection.subtype';\nvar TMP_NET_HOST_CARRIER_NAME = 'net.host.carrier.name';\nvar TMP_NET_HOST_CARRIER_MCC = 'net.host.carrier.mcc';\nvar TMP_NET_HOST_CARRIER_MNC = 'net.host.carrier.mnc';\nvar TMP_NET_HOST_CARRIER_ICC = 'net.host.carrier.icc';\nvar TMP_PEER_SERVICE = 'peer.service';\nvar TMP_ENDUSER_ID = 'enduser.id';\nvar TMP_ENDUSER_ROLE = 'enduser.role';\nvar TMP_ENDUSER_SCOPE = 'enduser.scope';\nvar TMP_THREAD_ID = 'thread.id';\nvar TMP_THREAD_NAME = 'thread.name';\nvar TMP_CODE_FUNCTION = 'code.function';\nvar TMP_CODE_NAMESPACE = 'code.namespace';\nvar TMP_CODE_FILEPATH = 'code.filepath';\nvar TMP_CODE_LINENO = 'code.lineno';\nvar TMP_HTTP_METHOD = 'http.method';\nvar TMP_HTTP_URL = 'http.url';\nvar TMP_HTTP_TARGET = 'http.target';\nvar TMP_HTTP_HOST = 'http.host';\nvar TMP_HTTP_SCHEME = 'http.scheme';\nvar TMP_HTTP_STATUS_CODE = 'http.status_code';\nvar TMP_HTTP_FLAVOR = 'http.flavor';\nvar TMP_HTTP_USER_AGENT = 'http.user_agent';\nvar TMP_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length';\nvar TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = 'http.request_content_length_uncompressed';\nvar TMP_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length';\nvar TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = 'http.response_content_length_uncompressed';\nvar TMP_HTTP_SERVER_NAME = 'http.server_name';\nvar TMP_HTTP_ROUTE = 'http.route';\nvar TMP_HTTP_CLIENT_IP = 'http.client_ip';\nvar TMP_AWS_DYNAMODB_TABLE_NAMES = 'aws.dynamodb.table_names';\nvar TMP_AWS_DYNAMODB_CONSUMED_CAPACITY = 'aws.dynamodb.consumed_capacity';\nvar TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = 'aws.dynamodb.item_collection_metrics';\nvar TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = 'aws.dynamodb.provisioned_read_capacity';\nvar TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = 'aws.dynamodb.provisioned_write_capacity';\nvar TMP_AWS_DYNAMODB_CONSISTENT_READ = 'aws.dynamodb.consistent_read';\nvar TMP_AWS_DYNAMODB_PROJECTION = 'aws.dynamodb.projection';\nvar TMP_AWS_DYNAMODB_LIMIT = 'aws.dynamodb.limit';\nvar TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET = 'aws.dynamodb.attributes_to_get';\nvar TMP_AWS_DYNAMODB_INDEX_NAME = 'aws.dynamodb.index_name';\nvar TMP_AWS_DYNAMODB_SELECT = 'aws.dynamodb.select';\nvar TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = 'aws.dynamodb.global_secondary_indexes';\nvar TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = 'aws.dynamodb.local_secondary_indexes';\nvar TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = 'aws.dynamodb.exclusive_start_table';\nvar TMP_AWS_DYNAMODB_TABLE_COUNT = 'aws.dynamodb.table_count';\nvar TMP_AWS_DYNAMODB_SCAN_FORWARD = 'aws.dynamodb.scan_forward';\nvar TMP_AWS_DYNAMODB_SEGMENT = 'aws.dynamodb.segment';\nvar TMP_AWS_DYNAMODB_TOTAL_SEGMENTS = 'aws.dynamodb.total_segments';\nvar TMP_AWS_DYNAMODB_COUNT = 'aws.dynamodb.count';\nvar TMP_AWS_DYNAMODB_SCANNED_COUNT = 'aws.dynamodb.scanned_count';\nvar TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = 'aws.dynamodb.attribute_definitions';\nvar TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = 'aws.dynamodb.global_secondary_index_updates';\nvar TMP_MESSAGING_SYSTEM = 'messaging.system';\nvar TMP_MESSAGING_DESTINATION = 'messaging.destination';\nvar TMP_MESSAGING_DESTINATION_KIND = 'messaging.destination_kind';\nvar TMP_MESSAGING_TEMP_DESTINATION = 'messaging.temp_destination';\nvar TMP_MESSAGING_PROTOCOL = 'messaging.protocol';\nvar TMP_MESSAGING_PROTOCOL_VERSION = 'messaging.protocol_version';\nvar TMP_MESSAGING_URL = 'messaging.url';\nvar TMP_MESSAGING_MESSAGE_ID = 'messaging.message_id';\nvar TMP_MESSAGING_CONVERSATION_ID = 'messaging.conversation_id';\nvar TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = 'messaging.message_payload_size_bytes';\nvar TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = 'messaging.message_payload_compressed_size_bytes';\nvar TMP_MESSAGING_OPERATION = 'messaging.operation';\nvar TMP_MESSAGING_CONSUMER_ID = 'messaging.consumer_id';\nvar TMP_MESSAGING_RABBITMQ_ROUTING_KEY = 'messaging.rabbitmq.routing_key';\nvar TMP_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message_key';\nvar TMP_MESSAGING_KAFKA_CONSUMER_GROUP = 'messaging.kafka.consumer_group';\nvar TMP_MESSAGING_KAFKA_CLIENT_ID = 'messaging.kafka.client_id';\nvar TMP_MESSAGING_KAFKA_PARTITION = 'messaging.kafka.partition';\nvar TMP_MESSAGING_KAFKA_TOMBSTONE = 'messaging.kafka.tombstone';\nvar TMP_RPC_SYSTEM = 'rpc.system';\nvar TMP_RPC_SERVICE = 'rpc.service';\nvar TMP_RPC_METHOD = 'rpc.method';\nvar TMP_RPC_GRPC_STATUS_CODE = 'rpc.grpc.status_code';\nvar TMP_RPC_JSONRPC_VERSION = 'rpc.jsonrpc.version';\nvar TMP_RPC_JSONRPC_REQUEST_ID = 'rpc.jsonrpc.request_id';\nvar TMP_RPC_JSONRPC_ERROR_CODE = 'rpc.jsonrpc.error_code';\nvar TMP_RPC_JSONRPC_ERROR_MESSAGE = 'rpc.jsonrpc.error_message';\nvar TMP_MESSAGE_TYPE = 'message.type';\nvar TMP_MESSAGE_ID = 'message.id';\nvar TMP_MESSAGE_COMPRESSED_SIZE = 'message.compressed_size';\nvar TMP_MESSAGE_UNCOMPRESSED_SIZE = 'message.uncompressed_size';\n/**\n * The full invoked ARN as provided on the `Context` passed to the function (`Lambda-Runtime-Invoked-Function-Arn` header on the `/runtime/invocation/next` applicable).\n *\n * Note: This may be different from `faas.id` if an alias is involved.\n *\n * @deprecated Use ATTR_AWS_LAMBDA_INVOKED_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_LAMBDA_INVOKED_ARN = TMP_AWS_LAMBDA_INVOKED_ARN;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use ATTR_DB_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_SYSTEM = TMP_DB_SYSTEM;\n/**\n * The connection string used to connect to the database. It is recommended to remove embedded credentials.\n *\n * @deprecated Use ATTR_DB_CONNECTION_STRING in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CONNECTION_STRING = TMP_DB_CONNECTION_STRING;\n/**\n * Username for accessing the database.\n *\n * @deprecated Use ATTR_DB_USER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_USER = TMP_DB_USER;\n/**\n * The fully-qualified class name of the [Java Database Connectivity (JDBC)](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) driver used to connect.\n *\n * @deprecated Use ATTR_DB_JDBC_DRIVER_CLASSNAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_JDBC_DRIVER_CLASSNAME = TMP_DB_JDBC_DRIVER_CLASSNAME;\n/**\n * If no [tech-specific attribute](#call-level-attributes-for-specific-technologies) is defined, this attribute is used to report the name of the database being accessed. For commands that switch the database, this should be set to the target database (even if the command fails).\n *\n * Note: In some SQL databases, the database name to be used is called &#34;schema name&#34;.\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_NAME = TMP_DB_NAME;\n/**\n * The database statement being executed.\n *\n * Note: The value may be sanitized to exclude sensitive information.\n *\n * @deprecated Use ATTR_DB_STATEMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_STATEMENT = TMP_DB_STATEMENT;\n/**\n * The name of the operation being executed, e.g. the [MongoDB command name](https://docs.mongodb.com/manual/reference/command/#database-operations) such as `findAndModify`, or the SQL keyword.\n *\n * Note: When setting this to an SQL keyword, it is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if the operation name is provided by the library being instrumented. If the SQL statement has an ambiguous operation, or performs more than one operation, this value may be omitted.\n *\n * @deprecated Use ATTR_DB_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_OPERATION = TMP_DB_OPERATION;\n/**\n * The Microsoft SQL Server [instance name](https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=sql-server-ver15) connecting to. This name is used to determine the port of a named instance.\n *\n * Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer required (but still recommended if non-standard).\n *\n * @deprecated Use ATTR_DB_MSSQL_INSTANCE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_MSSQL_INSTANCE_NAME = TMP_DB_MSSQL_INSTANCE_NAME;\n/**\n * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_KEYSPACE = TMP_DB_CASSANDRA_KEYSPACE;\n/**\n * The fetch size used for paging, i.e. how many rows will be returned at once.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_PAGE_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_PAGE_SIZE = TMP_DB_CASSANDRA_PAGE_SIZE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL = TMP_DB_CASSANDRA_CONSISTENCY_LEVEL;\n/**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: This mirrors the db.sql.table attribute but references cassandra rather than sql. It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_TABLE = TMP_DB_CASSANDRA_TABLE;\n/**\n * Whether or not the query is idempotent.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_IDEMPOTENCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_IDEMPOTENCE = TMP_DB_CASSANDRA_IDEMPOTENCE;\n/**\n * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT;\n/**\n * The ID of the coordinating node for a query.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_COORDINATOR_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_COORDINATOR_ID = TMP_DB_CASSANDRA_COORDINATOR_ID;\n/**\n * The data center of the coordinating node for a query.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_COORDINATOR_DC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_CASSANDRA_COORDINATOR_DC = TMP_DB_CASSANDRA_COORDINATOR_DC;\n/**\n * The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being accessed. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_HBASE_NAMESPACE = TMP_DB_HBASE_NAMESPACE;\n/**\n * The index of the database being accessed as used in the [`SELECT` command](https://redis.io/commands/select), provided as an integer. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_REDIS_DATABASE_INDEX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_REDIS_DATABASE_INDEX = TMP_DB_REDIS_DATABASE_INDEX;\n/**\n * The collection being accessed within the database stated in `db.name`.\n *\n * @deprecated Use ATTR_DB_MONGODB_COLLECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_MONGODB_COLLECTION = TMP_DB_MONGODB_COLLECTION;\n/**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n *\n * @deprecated Use ATTR_DB_SQL_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_DB_SQL_TABLE = TMP_DB_SQL_TABLE;\n/**\n * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n *\n * @deprecated Use ATTR_EXCEPTION_TYPE.\n */\nexport var SEMATTRS_EXCEPTION_TYPE = TMP_EXCEPTION_TYPE;\n/**\n * The exception message.\n *\n * @deprecated Use ATTR_EXCEPTION_MESSAGE.\n */\nexport var SEMATTRS_EXCEPTION_MESSAGE = TMP_EXCEPTION_MESSAGE;\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n *\n * @deprecated Use ATTR_EXCEPTION_STACKTRACE.\n */\nexport var SEMATTRS_EXCEPTION_STACKTRACE = TMP_EXCEPTION_STACKTRACE;\n/**\n* SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.\n*\n* Note: An exception is considered to have escaped (or left) the scope of a span,\nif that span is ended while the exception is still logically &#34;in flight&#34;.\nThis may be actually &#34;in flight&#34; in some languages (e.g. if the exception\nis passed to a Context manager&#39;s `__exit__` method in Python) but will\nusually be caught at the point of recording the exception in most languages.\n\nIt is usually not possible to determine at the point where an exception is thrown\nwhether it will escape the scope of a span.\nHowever, it is trivial to know that an exception\nwill escape, if one checks for an active exception just before ending the span,\nas done in the [example above](#exception-end-example).\n\nIt follows that an exception may still escape the scope of the span\neven if the `exception.escaped` attribute was not set or set to false,\nsince the event might have been recorded at a time where it was not\nclear whether the exception will escape.\n*\n* @deprecated Use ATTR_EXCEPTION_ESCAPED.\n*/\nexport var SEMATTRS_EXCEPTION_ESCAPED = TMP_EXCEPTION_ESCAPED;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use ATTR_FAAS_TRIGGER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_TRIGGER = TMP_FAAS_TRIGGER;\n/**\n * The execution ID of the current function execution.\n *\n * @deprecated Use ATTR_FAAS_INVOCATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_EXECUTION = TMP_FAAS_EXECUTION;\n/**\n * The name of the source on which the triggering operation was performed. For example, in Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database name.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_COLLECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_DOCUMENT_COLLECTION = TMP_FAAS_DOCUMENT_COLLECTION;\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_DOCUMENT_OPERATION = TMP_FAAS_DOCUMENT_OPERATION;\n/**\n * A string containing the time when the data was accessed in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_TIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_DOCUMENT_TIME = TMP_FAAS_DOCUMENT_TIME;\n/**\n * The document name/table subjected to the operation. For example, in Cloud Storage or S3 is the name of the file, and in Cosmos DB the table name.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_DOCUMENT_NAME = TMP_FAAS_DOCUMENT_NAME;\n/**\n * A string containing the function invocation time in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n *\n * @deprecated Use ATTR_FAAS_TIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_TIME = TMP_FAAS_TIME;\n/**\n * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm).\n *\n * @deprecated Use ATTR_FAAS_CRON in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_CRON = TMP_FAAS_CRON;\n/**\n * A boolean that is true if the serverless function is executed for the first time (aka cold-start).\n *\n * @deprecated Use ATTR_FAAS_COLDSTART in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_COLDSTART = TMP_FAAS_COLDSTART;\n/**\n * The name of the invoked function.\n *\n * Note: SHOULD be equal to the `faas.name` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_INVOKED_NAME = TMP_FAAS_INVOKED_NAME;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_PROVIDER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_INVOKED_PROVIDER = TMP_FAAS_INVOKED_PROVIDER;\n/**\n * The cloud region of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_REGION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_FAAS_INVOKED_REGION = TMP_FAAS_INVOKED_REGION;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use ATTR_NET_TRANSPORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_TRANSPORT = TMP_NET_TRANSPORT;\n/**\n * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6).\n *\n * @deprecated Use ATTR_NET_PEER_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_PEER_IP = TMP_NET_PEER_IP;\n/**\n * Remote port number.\n *\n * @deprecated Use ATTR_NET_PEER_PORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_PEER_PORT = TMP_NET_PEER_PORT;\n/**\n * Remote hostname or similar, see note below.\n *\n * @deprecated Use ATTR_NET_PEER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_PEER_NAME = TMP_NET_PEER_NAME;\n/**\n * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.\n *\n * @deprecated Use ATTR_NET_HOST_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_IP = TMP_NET_HOST_IP;\n/**\n * Like `net.peer.port` but for the host port.\n *\n * @deprecated Use ATTR_NET_HOST_PORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_PORT = TMP_NET_HOST_PORT;\n/**\n * Local hostname or similar, see note below.\n *\n * @deprecated Use ATTR_NET_HOST_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_NAME = TMP_NET_HOST_NAME;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use ATTR_NETWORK_CONNECTION_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_CONNECTION_TYPE = TMP_NET_HOST_CONNECTION_TYPE;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use ATTR_NETWORK_CONNECTION_SUBTYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_CONNECTION_SUBTYPE = TMP_NET_HOST_CONNECTION_SUBTYPE;\n/**\n * The name of the mobile carrier.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_CARRIER_NAME = TMP_NET_HOST_CARRIER_NAME;\n/**\n * The mobile carrier country code.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_MCC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_CARRIER_MCC = TMP_NET_HOST_CARRIER_MCC;\n/**\n * The mobile carrier network code.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_MNC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_CARRIER_MNC = TMP_NET_HOST_CARRIER_MNC;\n/**\n * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_ICC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_NET_HOST_CARRIER_ICC = TMP_NET_HOST_CARRIER_ICC;\n/**\n * The [`service.name`](../../resource/semantic_conventions/README.md#service) of the remote service. SHOULD be equal to the actual `service.name` resource attribute of the remote service if any.\n *\n * @deprecated Use ATTR_PEER_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_PEER_SERVICE = TMP_PEER_SERVICE;\n/**\n * Username or client_id extracted from the access token or [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) header in the inbound request from outside the system.\n *\n * @deprecated Use ATTR_ENDUSER_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_ENDUSER_ID = TMP_ENDUSER_ID;\n/**\n * Actual/assumed role the client is making the request under extracted from token or application security context.\n *\n * @deprecated Use ATTR_ENDUSER_ROLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_ENDUSER_ROLE = TMP_ENDUSER_ROLE;\n/**\n * Scopes or granted authorities the client currently possesses extracted from token or application security context. The value would come from the scope associated with an [OAuth 2.0 Access Token](https://tools.ietf.org/html/rfc6749#section-3.3) or an attribute value in a [SAML 2.0 Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html).\n *\n * @deprecated Use ATTR_ENDUSER_SCOPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_ENDUSER_SCOPE = TMP_ENDUSER_SCOPE;\n/**\n * Current &#34;managed&#34; thread ID (as opposed to OS thread ID).\n *\n * @deprecated Use ATTR_THREAD_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_THREAD_ID = TMP_THREAD_ID;\n/**\n * Current thread name.\n *\n * @deprecated Use ATTR_THREAD_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_THREAD_NAME = TMP_THREAD_NAME;\n/**\n * The method or function name, or equivalent (usually rightmost part of the code unit&#39;s name).\n *\n * @deprecated Use ATTR_CODE_FUNCTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_CODE_FUNCTION = TMP_CODE_FUNCTION;\n/**\n * The &#34;namespace&#34; within which `code.function` is defined. Usually the qualified class or module name, such that `code.namespace` + some separator + `code.function` form a unique identifier for the code unit.\n *\n * @deprecated Use ATTR_CODE_NAMESPACE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_CODE_NAMESPACE = TMP_CODE_NAMESPACE;\n/**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).\n *\n * @deprecated Use ATTR_CODE_FILEPATH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_CODE_FILEPATH = TMP_CODE_FILEPATH;\n/**\n * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`.\n *\n * @deprecated Use ATTR_CODE_LINENO in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_CODE_LINENO = TMP_CODE_LINENO;\n/**\n * HTTP request method.\n *\n * @deprecated Use ATTR_HTTP_METHOD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_METHOD = TMP_HTTP_METHOD;\n/**\n * Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`. Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.\n *\n * Note: `http.url` MUST NOT contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case the attribute&#39;s value should be `https://www.example.com/`.\n *\n * @deprecated Use ATTR_HTTP_URL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_URL = TMP_HTTP_URL;\n/**\n * The full request target as passed in a HTTP request line or equivalent.\n *\n * @deprecated Use ATTR_HTTP_TARGET in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_TARGET = TMP_HTTP_TARGET;\n/**\n * The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4). An empty Host header should also be reported, see note.\n *\n * Note: When the header is present but empty the attribute SHOULD be set to the empty string. Note that this is a valid situation that is expected in certain cases, according the aforementioned [section of RFC 7230](https://tools.ietf.org/html/rfc7230#section-5.4). When the header is not set the attribute MUST NOT be set.\n *\n * @deprecated Use ATTR_HTTP_HOST in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_HOST = TMP_HTTP_HOST;\n/**\n * The URI scheme identifying the used protocol.\n *\n * @deprecated Use ATTR_HTTP_SCHEME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_SCHEME = TMP_HTTP_SCHEME;\n/**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n *\n * @deprecated Use ATTR_HTTP_STATUS_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_STATUS_CODE = TMP_HTTP_STATUS_CODE;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use ATTR_HTTP_FLAVOR in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_FLAVOR = TMP_HTTP_FLAVOR;\n/**\n * Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.\n *\n * @deprecated Use ATTR_HTTP_USER_AGENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_USER_AGENT = TMP_HTTP_USER_AGENT;\n/**\n * The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n *\n * @deprecated Use ATTR_HTTP_REQUEST_CONTENT_LENGTH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH = TMP_HTTP_REQUEST_CONTENT_LENGTH;\n/**\n * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used.\n *\n * @deprecated Use ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED;\n/**\n * The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n *\n * @deprecated Use ATTR_HTTP_RESPONSE_CONTENT_LENGTH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH = TMP_HTTP_RESPONSE_CONTENT_LENGTH;\n/**\n * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used.\n *\n * @deprecated Use ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED;\n/**\n * The primary server name of the matched virtual host. This should be obtained via configuration. If no such configuration can be obtained, this attribute MUST NOT be set ( `net.host.name` should be used instead).\n *\n * Note: `http.url` is usually not readily available on the server side but would have to be assembled in a cumbersome and sometimes lossy process from other information (see e.g. open-telemetry/opentelemetry-python/pull/148). It is thus preferred to supply the raw data that is available.\n *\n * @deprecated Use ATTR_HTTP_SERVER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_HTTP_SERVER_NAME = TMP_HTTP_SERVER_NAME;\n/**\n * The matched route (path template).\n *\n * @deprecated Use ATTR_HTTP_ROUTE.\n */\nexport var SEMATTRS_HTTP_ROUTE = TMP_HTTP_ROUTE;\n/**\n* The IP address of the original client behind all proxies, if known (e.g. from [X-Forwarded-For](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For)).\n*\n* Note: This is not necessarily the same as `net.peer.ip`, which would\nidentify the network-level peer, which may be a proxy.\n\nThis attribute should be set when a source of information different\nfrom the one used for `net.peer.ip`, is available even if that other\nsource just confirms the same value as `net.peer.ip`.\nRationale: For `net.peer.ip`, one typically does not know if it\ncomes from a proxy, reverse proxy, or the actual client. Setting\n`http.client_ip` when it&#39;s the same as `net.peer.ip` means that\none is at least somewhat confident that the address is not that of\nthe closest proxy.\n*\n* @deprecated Use ATTR_HTTP_CLIENT_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexport var SEMATTRS_HTTP_CLIENT_IP = TMP_HTTP_CLIENT_IP;\n/**\n * The keys in the `RequestItems` object field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TABLE_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_TABLE_NAMES = TMP_AWS_DYNAMODB_TABLE_NAMES;\n/**\n * The JSON-serialized value of each item in the `ConsumedCapacity` response field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_CONSUMED_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY = TMP_AWS_DYNAMODB_CONSUMED_CAPACITY;\n/**\n * The JSON-serialized value of the `ItemCollectionMetrics` response field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ITEM_COLLECTION_METRICS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS;\n/**\n * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY;\n/**\n * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY;\n/**\n * The value of the `ConsistentRead` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_CONSISTENT_READ in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ = TMP_AWS_DYNAMODB_CONSISTENT_READ;\n/**\n * The value of the `ProjectionExpression` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROJECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_PROJECTION = TMP_AWS_DYNAMODB_PROJECTION;\n/**\n * The value of the `Limit` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_LIMIT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_LIMIT = TMP_AWS_DYNAMODB_LIMIT;\n/**\n * The value of the `AttributesToGet` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ATTRIBUTES_TO_GET in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET = TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET;\n/**\n * The value of the `IndexName` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_INDEX_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_INDEX_NAME = TMP_AWS_DYNAMODB_INDEX_NAME;\n/**\n * The value of the `Select` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SELECT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_SELECT = TMP_AWS_DYNAMODB_SELECT;\n/**\n * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES;\n/**\n * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES;\n/**\n * The value of the `ExclusiveStartTableName` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_EXCLUSIVE_START_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE;\n/**\n * The the number of items in the `TableNames` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TABLE_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_TABLE_COUNT = TMP_AWS_DYNAMODB_TABLE_COUNT;\n/**\n * The value of the `ScanIndexForward` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SCAN_FORWARD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD = TMP_AWS_DYNAMODB_SCAN_FORWARD;\n/**\n * The value of the `Segment` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SEGMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_SEGMENT = TMP_AWS_DYNAMODB_SEGMENT;\n/**\n * The value of the `TotalSegments` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TOTAL_SEGMENTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS = TMP_AWS_DYNAMODB_TOTAL_SEGMENTS;\n/**\n * The value of the `Count` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_COUNT = TMP_AWS_DYNAMODB_COUNT;\n/**\n * The value of the `ScannedCount` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SCANNED_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT = TMP_AWS_DYNAMODB_SCANNED_COUNT;\n/**\n * The JSON-serialized value of each item in the `AttributeDefinitions` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS;\n/**\n * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES;\n/**\n * A string identifying the messaging system.\n *\n * @deprecated Use ATTR_MESSAGING_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_SYSTEM = TMP_MESSAGING_SYSTEM;\n/**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_DESTINATION = TMP_MESSAGING_DESTINATION;\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport var SEMATTRS_MESSAGING_DESTINATION_KIND = TMP_MESSAGING_DESTINATION_KIND;\n/**\n * A boolean that is true if the message destination is temporary.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_TEMPORARY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_TEMP_DESTINATION = TMP_MESSAGING_TEMP_DESTINATION;\n/**\n * The name of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME.\n */\nexport var SEMATTRS_MESSAGING_PROTOCOL = TMP_MESSAGING_PROTOCOL;\n/**\n * The version of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION.\n */\nexport var SEMATTRS_MESSAGING_PROTOCOL_VERSION = TMP_MESSAGING_PROTOCOL_VERSION;\n/**\n * Connection string.\n *\n * @deprecated Removed in semconv v1.17.0.\n */\nexport var SEMATTRS_MESSAGING_URL = TMP_MESSAGING_URL;\n/**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_MESSAGE_ID = TMP_MESSAGING_MESSAGE_ID;\n/**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called &#34;Correlation ID&#34;.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_CONVERSATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_CONVERSATION_ID = TMP_MESSAGING_CONVERSATION_ID;\n/**\n * The (uncompressed) size of the message payload in bytes. Also use this attribute if it is unknown whether the compressed or uncompressed payload size is reported.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_BODY_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES;\n/**\n * The compressed size of the message payload in bytes.\n *\n * @deprecated Removed in semconv v1.22.0.\n */\nexport var SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES;\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is &#34;send&#34;, this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use ATTR_MESSAGING_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_OPERATION = TMP_MESSAGING_OPERATION;\n/**\n * The identifier for the consumer receiving a message. For Kafka, set it to `{messaging.kafka.consumer_group} - {messaging.kafka.client_id}`, if both are present, or only `messaging.kafka.consumer_group`. For brokers, such as RabbitMQ and Artemis, set it to the `client_id` of the client consuming the message.\n *\n * @deprecated Removed in semconv v1.21.0.\n */\nexport var SEMATTRS_MESSAGING_CONSUMER_ID = TMP_MESSAGING_CONSUMER_ID;\n/**\n * RabbitMQ message routing key.\n *\n * @deprecated Use ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY = TMP_MESSAGING_RABBITMQ_ROUTING_KEY;\n/**\n * Message keys in Kafka are used for grouping alike messages to ensure they&#39;re processed on the same partition. They differ from `messaging.message_id` in that they&#39;re not unique. If the key is `null`, the attribute MUST NOT be set.\n *\n * Note: If the key type is not string, it&#39;s string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don&#39;t include its value.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_MESSAGE_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY = TMP_MESSAGING_KAFKA_MESSAGE_KEY;\n/**\n * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_CONSUMER_GROUP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP = TMP_MESSAGING_KAFKA_CONSUMER_GROUP;\n/**\n * Client Id for the Consumer or Producer that is handling the message.\n *\n * @deprecated Use ATTR_MESSAGING_CLIENT_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_KAFKA_CLIENT_ID = TMP_MESSAGING_KAFKA_CLIENT_ID;\n/**\n * Partition the message is sent to.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_DESTINATION_PARTITION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_KAFKA_PARTITION = TMP_MESSAGING_KAFKA_PARTITION;\n/**\n * A boolean that is true if the message is a tombstone.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGING_KAFKA_TOMBSTONE = TMP_MESSAGING_KAFKA_TOMBSTONE;\n/**\n * A string identifying the remoting system.\n *\n * @deprecated Use ATTR_RPC_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_SYSTEM = TMP_RPC_SYSTEM;\n/**\n * The full (logical) name of the service being called, including its package name, if applicable.\n *\n * Note: This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.namespace` attribute may be used to store the latter (despite the attribute name, it may include a class name; e.g., class with method actually executing the call on the server side, RPC client stub class on the client side).\n *\n * @deprecated Use ATTR_RPC_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_SERVICE = TMP_RPC_SERVICE;\n/**\n * The name of the (logical) method being called, must be equal to the $method part in the span name.\n *\n * Note: This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function` attribute may be used to store the latter (e.g., method actually executing the call on the server side, RPC client stub method on the client side).\n *\n * @deprecated Use ATTR_RPC_METHOD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_METHOD = TMP_RPC_METHOD;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use ATTR_RPC_GRPC_STATUS_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_GRPC_STATUS_CODE = TMP_RPC_GRPC_STATUS_CODE;\n/**\n * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_JSONRPC_VERSION = TMP_RPC_JSONRPC_VERSION;\n/**\n * `id` property of request or response. Since protocol allows id to be int, string, `null` or missing (for notifications), value is expected to be cast to string for simplicity. Use empty string in case of `null` value. Omit entirely if this is a notification.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_REQUEST_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_JSONRPC_REQUEST_ID = TMP_RPC_JSONRPC_REQUEST_ID;\n/**\n * `error.code` property of response if it is an error response.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_ERROR_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_JSONRPC_ERROR_CODE = TMP_RPC_JSONRPC_ERROR_CODE;\n/**\n * `error.message` property of response if it is an error response.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_ERROR_MESSAGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE = TMP_RPC_JSONRPC_ERROR_MESSAGE;\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use ATTR_MESSAGE_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGE_TYPE = TMP_MESSAGE_TYPE;\n/**\n * MUST be calculated as two different counters starting from `1` one for sent messages and one for received message.\n *\n * Note: This way we guarantee that the values will be consistent between different implementations.\n *\n * @deprecated Use ATTR_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGE_ID = TMP_MESSAGE_ID;\n/**\n * Compressed size of the message in bytes.\n *\n * @deprecated Use ATTR_MESSAGE_COMPRESSED_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGE_COMPRESSED_SIZE = TMP_MESSAGE_COMPRESSED_SIZE;\n/**\n * Uncompressed size of the message in bytes.\n *\n * @deprecated Use ATTR_MESSAGE_UNCOMPRESSED_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE = TMP_MESSAGE_UNCOMPRESSED_SIZE;\n/**\n * Create exported Value Map for SemanticAttributes values\n * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification\n */\nexport var SemanticAttributes = \n/*#__PURE__*/ createConstMap([\n    TMP_AWS_LAMBDA_INVOKED_ARN,\n    TMP_DB_SYSTEM,\n    TMP_DB_CONNECTION_STRING,\n    TMP_DB_USER,\n    TMP_DB_JDBC_DRIVER_CLASSNAME,\n    TMP_DB_NAME,\n    TMP_DB_STATEMENT,\n    TMP_DB_OPERATION,\n    TMP_DB_MSSQL_INSTANCE_NAME,\n    TMP_DB_CASSANDRA_KEYSPACE,\n    TMP_DB_CASSANDRA_PAGE_SIZE,\n    TMP_DB_CASSANDRA_CONSISTENCY_LEVEL,\n    TMP_DB_CASSANDRA_TABLE,\n    TMP_DB_CASSANDRA_IDEMPOTENCE,\n    TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT,\n    TMP_DB_CASSANDRA_COORDINATOR_ID,\n    TMP_DB_CASSANDRA_COORDINATOR_DC,\n    TMP_DB_HBASE_NAMESPACE,\n    TMP_DB_REDIS_DATABASE_INDEX,\n    TMP_DB_MONGODB_COLLECTION,\n    TMP_DB_SQL_TABLE,\n    TMP_EXCEPTION_TYPE,\n    TMP_EXCEPTION_MESSAGE,\n    TMP_EXCEPTION_STACKTRACE,\n    TMP_EXCEPTION_ESCAPED,\n    TMP_FAAS_TRIGGER,\n    TMP_FAAS_EXECUTION,\n    TMP_FAAS_DOCUMENT_COLLECTION,\n    TMP_FAAS_DOCUMENT_OPERATION,\n    TMP_FAAS_DOCUMENT_TIME,\n    TMP_FAAS_DOCUMENT_NAME,\n    TMP_FAAS_TIME,\n    TMP_FAAS_CRON,\n    TMP_FAAS_COLDSTART,\n    TMP_FAAS_INVOKED_NAME,\n    TMP_FAAS_INVOKED_PROVIDER,\n    TMP_FAAS_INVOKED_REGION,\n    TMP_NET_TRANSPORT,\n    TMP_NET_PEER_IP,\n    TMP_NET_PEER_PORT,\n    TMP_NET_PEER_NAME,\n    TMP_NET_HOST_IP,\n    TMP_NET_HOST_PORT,\n    TMP_NET_HOST_NAME,\n    TMP_NET_HOST_CONNECTION_TYPE,\n    TMP_NET_HOST_CONNECTION_SUBTYPE,\n    TMP_NET_HOST_CARRIER_NAME,\n    TMP_NET_HOST_CARRIER_MCC,\n    TMP_NET_HOST_CARRIER_MNC,\n    TMP_NET_HOST_CARRIER_ICC,\n    TMP_PEER_SERVICE,\n    TMP_ENDUSER_ID,\n    TMP_ENDUSER_ROLE,\n    TMP_ENDUSER_SCOPE,\n    TMP_THREAD_ID,\n    TMP_THREAD_NAME,\n    TMP_CODE_FUNCTION,\n    TMP_CODE_NAMESPACE,\n    TMP_CODE_FILEPATH,\n    TMP_CODE_LINENO,\n    TMP_HTTP_METHOD,\n    TMP_HTTP_URL,\n    TMP_HTTP_TARGET,\n    TMP_HTTP_HOST,\n    TMP_HTTP_SCHEME,\n    TMP_HTTP_STATUS_CODE,\n    TMP_HTTP_FLAVOR,\n    TMP_HTTP_USER_AGENT,\n    TMP_HTTP_REQUEST_CONTENT_LENGTH,\n    TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED,\n    TMP_HTTP_RESPONSE_CONTENT_LENGTH,\n    TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED,\n    TMP_HTTP_SERVER_NAME,\n    TMP_HTTP_ROUTE,\n    TMP_HTTP_CLIENT_IP,\n    TMP_AWS_DYNAMODB_TABLE_NAMES,\n    TMP_AWS_DYNAMODB_CONSUMED_CAPACITY,\n    TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS,\n    TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY,\n    TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY,\n    TMP_AWS_DYNAMODB_CONSISTENT_READ,\n    TMP_AWS_DYNAMODB_PROJECTION,\n    TMP_AWS_DYNAMODB_LIMIT,\n    TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET,\n    TMP_AWS_DYNAMODB_INDEX_NAME,\n    TMP_AWS_DYNAMODB_SELECT,\n    TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES,\n    TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES,\n    TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE,\n    TMP_AWS_DYNAMODB_TABLE_COUNT,\n    TMP_AWS_DYNAMODB_SCAN_FORWARD,\n    TMP_AWS_DYNAMODB_SEGMENT,\n    TMP_AWS_DYNAMODB_TOTAL_SEGMENTS,\n    TMP_AWS_DYNAMODB_COUNT,\n    TMP_AWS_DYNAMODB_SCANNED_COUNT,\n    TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS,\n    TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES,\n    TMP_MESSAGING_SYSTEM,\n    TMP_MESSAGING_DESTINATION,\n    TMP_MESSAGING_DESTINATION_KIND,\n    TMP_MESSAGING_TEMP_DESTINATION,\n    TMP_MESSAGING_PROTOCOL,\n    TMP_MESSAGING_PROTOCOL_VERSION,\n    TMP_MESSAGING_URL,\n    TMP_MESSAGING_MESSAGE_ID,\n    TMP_MESSAGING_CONVERSATION_ID,\n    TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES,\n    TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES,\n    TMP_MESSAGING_OPERATION,\n    TMP_MESSAGING_CONSUMER_ID,\n    TMP_MESSAGING_RABBITMQ_ROUTING_KEY,\n    TMP_MESSAGING_KAFKA_MESSAGE_KEY,\n    TMP_MESSAGING_KAFKA_CONSUMER_GROUP,\n    TMP_MESSAGING_KAFKA_CLIENT_ID,\n    TMP_MESSAGING_KAFKA_PARTITION,\n    TMP_MESSAGING_KAFKA_TOMBSTONE,\n    TMP_RPC_SYSTEM,\n    TMP_RPC_SERVICE,\n    TMP_RPC_METHOD,\n    TMP_RPC_GRPC_STATUS_CODE,\n    TMP_RPC_JSONRPC_VERSION,\n    TMP_RPC_JSONRPC_REQUEST_ID,\n    TMP_RPC_JSONRPC_ERROR_CODE,\n    TMP_RPC_JSONRPC_ERROR_MESSAGE,\n    TMP_MESSAGE_TYPE,\n    TMP_MESSAGE_ID,\n    TMP_MESSAGE_COMPRESSED_SIZE,\n    TMP_MESSAGE_UNCOMPRESSED_SIZE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for DbSystemValues enum definition\n *\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_DBSYSTEMVALUES_OTHER_SQL = 'other_sql';\nvar TMP_DBSYSTEMVALUES_MSSQL = 'mssql';\nvar TMP_DBSYSTEMVALUES_MYSQL = 'mysql';\nvar TMP_DBSYSTEMVALUES_ORACLE = 'oracle';\nvar TMP_DBSYSTEMVALUES_DB2 = 'db2';\nvar TMP_DBSYSTEMVALUES_POSTGRESQL = 'postgresql';\nvar TMP_DBSYSTEMVALUES_REDSHIFT = 'redshift';\nvar TMP_DBSYSTEMVALUES_HIVE = 'hive';\nvar TMP_DBSYSTEMVALUES_CLOUDSCAPE = 'cloudscape';\nvar TMP_DBSYSTEMVALUES_HSQLDB = 'hsqldb';\nvar TMP_DBSYSTEMVALUES_PROGRESS = 'progress';\nvar TMP_DBSYSTEMVALUES_MAXDB = 'maxdb';\nvar TMP_DBSYSTEMVALUES_HANADB = 'hanadb';\nvar TMP_DBSYSTEMVALUES_INGRES = 'ingres';\nvar TMP_DBSYSTEMVALUES_FIRSTSQL = 'firstsql';\nvar TMP_DBSYSTEMVALUES_EDB = 'edb';\nvar TMP_DBSYSTEMVALUES_CACHE = 'cache';\nvar TMP_DBSYSTEMVALUES_ADABAS = 'adabas';\nvar TMP_DBSYSTEMVALUES_FIREBIRD = 'firebird';\nvar TMP_DBSYSTEMVALUES_DERBY = 'derby';\nvar TMP_DBSYSTEMVALUES_FILEMAKER = 'filemaker';\nvar TMP_DBSYSTEMVALUES_INFORMIX = 'informix';\nvar TMP_DBSYSTEMVALUES_INSTANTDB = 'instantdb';\nvar TMP_DBSYSTEMVALUES_INTERBASE = 'interbase';\nvar TMP_DBSYSTEMVALUES_MARIADB = 'mariadb';\nvar TMP_DBSYSTEMVALUES_NETEZZA = 'netezza';\nvar TMP_DBSYSTEMVALUES_PERVASIVE = 'pervasive';\nvar TMP_DBSYSTEMVALUES_POINTBASE = 'pointbase';\nvar TMP_DBSYSTEMVALUES_SQLITE = 'sqlite';\nvar TMP_DBSYSTEMVALUES_SYBASE = 'sybase';\nvar TMP_DBSYSTEMVALUES_TERADATA = 'teradata';\nvar TMP_DBSYSTEMVALUES_VERTICA = 'vertica';\nvar TMP_DBSYSTEMVALUES_H2 = 'h2';\nvar TMP_DBSYSTEMVALUES_COLDFUSION = 'coldfusion';\nvar TMP_DBSYSTEMVALUES_CASSANDRA = 'cassandra';\nvar TMP_DBSYSTEMVALUES_HBASE = 'hbase';\nvar TMP_DBSYSTEMVALUES_MONGODB = 'mongodb';\nvar TMP_DBSYSTEMVALUES_REDIS = 'redis';\nvar TMP_DBSYSTEMVALUES_COUCHBASE = 'couchbase';\nvar TMP_DBSYSTEMVALUES_COUCHDB = 'couchdb';\nvar TMP_DBSYSTEMVALUES_COSMOSDB = 'cosmosdb';\nvar TMP_DBSYSTEMVALUES_DYNAMODB = 'dynamodb';\nvar TMP_DBSYSTEMVALUES_NEO4J = 'neo4j';\nvar TMP_DBSYSTEMVALUES_GEODE = 'geode';\nvar TMP_DBSYSTEMVALUES_ELASTICSEARCH = 'elasticsearch';\nvar TMP_DBSYSTEMVALUES_MEMCACHED = 'memcached';\nvar TMP_DBSYSTEMVALUES_COCKROACHDB = 'cockroachdb';\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_OTHER_SQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_OTHER_SQL = TMP_DBSYSTEMVALUES_OTHER_SQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MSSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_MSSQL = TMP_DBSYSTEMVALUES_MSSQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MYSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_MYSQL = TMP_DBSYSTEMVALUES_MYSQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ORACLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_ORACLE = TMP_DBSYSTEMVALUES_ORACLE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DB2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_DB2 = TMP_DBSYSTEMVALUES_DB2;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_POSTGRESQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_POSTGRESQL = TMP_DBSYSTEMVALUES_POSTGRESQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_REDSHIFT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_REDSHIFT = TMP_DBSYSTEMVALUES_REDSHIFT;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_HIVE = TMP_DBSYSTEMVALUES_HIVE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CLOUDSCAPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_CLOUDSCAPE = TMP_DBSYSTEMVALUES_CLOUDSCAPE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HSQLDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_HSQLDB = TMP_DBSYSTEMVALUES_HSQLDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_PROGRESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_PROGRESS = TMP_DBSYSTEMVALUES_PROGRESS;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MAXDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_MAXDB = TMP_DBSYSTEMVALUES_MAXDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HANADB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_HANADB = TMP_DBSYSTEMVALUES_HANADB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INGRES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_INGRES = TMP_DBSYSTEMVALUES_INGRES;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FIRSTSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_FIRSTSQL = TMP_DBSYSTEMVALUES_FIRSTSQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_EDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_EDB = TMP_DBSYSTEMVALUES_EDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CACHE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_CACHE = TMP_DBSYSTEMVALUES_CACHE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ADABAS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_ADABAS = TMP_DBSYSTEMVALUES_ADABAS;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FIREBIRD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_FIREBIRD = TMP_DBSYSTEMVALUES_FIREBIRD;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DERBY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_DERBY = TMP_DBSYSTEMVALUES_DERBY;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FILEMAKER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_FILEMAKER = TMP_DBSYSTEMVALUES_FILEMAKER;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INFORMIX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_INFORMIX = TMP_DBSYSTEMVALUES_INFORMIX;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INSTANTDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_INSTANTDB = TMP_DBSYSTEMVALUES_INSTANTDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INTERBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_INTERBASE = TMP_DBSYSTEMVALUES_INTERBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MARIADB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_MARIADB = TMP_DBSYSTEMVALUES_MARIADB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_NETEZZA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_NETEZZA = TMP_DBSYSTEMVALUES_NETEZZA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_PERVASIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_PERVASIVE = TMP_DBSYSTEMVALUES_PERVASIVE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_POINTBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_POINTBASE = TMP_DBSYSTEMVALUES_POINTBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_SQLITE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_SQLITE = TMP_DBSYSTEMVALUES_SQLITE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_SYBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_SYBASE = TMP_DBSYSTEMVALUES_SYBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_TERADATA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_TERADATA = TMP_DBSYSTEMVALUES_TERADATA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_VERTICA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_VERTICA = TMP_DBSYSTEMVALUES_VERTICA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_H2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_H2 = TMP_DBSYSTEMVALUES_H2;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COLDFUSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_COLDFUSION = TMP_DBSYSTEMVALUES_COLDFUSION;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CASSANDRA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_CASSANDRA = TMP_DBSYSTEMVALUES_CASSANDRA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_HBASE = TMP_DBSYSTEMVALUES_HBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MONGODB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_MONGODB = TMP_DBSYSTEMVALUES_MONGODB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_REDIS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_REDIS = TMP_DBSYSTEMVALUES_REDIS;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COUCHBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_COUCHBASE = TMP_DBSYSTEMVALUES_COUCHBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COUCHDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_COUCHDB = TMP_DBSYSTEMVALUES_COUCHDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COSMOSDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_COSMOSDB = TMP_DBSYSTEMVALUES_COSMOSDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DYNAMODB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_DYNAMODB = TMP_DBSYSTEMVALUES_DYNAMODB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_NEO4J in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_NEO4J = TMP_DBSYSTEMVALUES_NEO4J;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_GEODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_GEODE = TMP_DBSYSTEMVALUES_GEODE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ELASTICSEARCH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_ELASTICSEARCH = TMP_DBSYSTEMVALUES_ELASTICSEARCH;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MEMCACHED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_MEMCACHED = TMP_DBSYSTEMVALUES_MEMCACHED;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COCKROACHDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBSYSTEMVALUES_COCKROACHDB = TMP_DBSYSTEMVALUES_COCKROACHDB;\n/**\n * The constant map of values for DbSystemValues.\n * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification.\n */\nexport var DbSystemValues = \n/*#__PURE__*/ createConstMap([\n    TMP_DBSYSTEMVALUES_OTHER_SQL,\n    TMP_DBSYSTEMVALUES_MSSQL,\n    TMP_DBSYSTEMVALUES_MYSQL,\n    TMP_DBSYSTEMVALUES_ORACLE,\n    TMP_DBSYSTEMVALUES_DB2,\n    TMP_DBSYSTEMVALUES_POSTGRESQL,\n    TMP_DBSYSTEMVALUES_REDSHIFT,\n    TMP_DBSYSTEMVALUES_HIVE,\n    TMP_DBSYSTEMVALUES_CLOUDSCAPE,\n    TMP_DBSYSTEMVALUES_HSQLDB,\n    TMP_DBSYSTEMVALUES_PROGRESS,\n    TMP_DBSYSTEMVALUES_MAXDB,\n    TMP_DBSYSTEMVALUES_HANADB,\n    TMP_DBSYSTEMVALUES_INGRES,\n    TMP_DBSYSTEMVALUES_FIRSTSQL,\n    TMP_DBSYSTEMVALUES_EDB,\n    TMP_DBSYSTEMVALUES_CACHE,\n    TMP_DBSYSTEMVALUES_ADABAS,\n    TMP_DBSYSTEMVALUES_FIREBIRD,\n    TMP_DBSYSTEMVALUES_DERBY,\n    TMP_DBSYSTEMVALUES_FILEMAKER,\n    TMP_DBSYSTEMVALUES_INFORMIX,\n    TMP_DBSYSTEMVALUES_INSTANTDB,\n    TMP_DBSYSTEMVALUES_INTERBASE,\n    TMP_DBSYSTEMVALUES_MARIADB,\n    TMP_DBSYSTEMVALUES_NETEZZA,\n    TMP_DBSYSTEMVALUES_PERVASIVE,\n    TMP_DBSYSTEMVALUES_POINTBASE,\n    TMP_DBSYSTEMVALUES_SQLITE,\n    TMP_DBSYSTEMVALUES_SYBASE,\n    TMP_DBSYSTEMVALUES_TERADATA,\n    TMP_DBSYSTEMVALUES_VERTICA,\n    TMP_DBSYSTEMVALUES_H2,\n    TMP_DBSYSTEMVALUES_COLDFUSION,\n    TMP_DBSYSTEMVALUES_CASSANDRA,\n    TMP_DBSYSTEMVALUES_HBASE,\n    TMP_DBSYSTEMVALUES_MONGODB,\n    TMP_DBSYSTEMVALUES_REDIS,\n    TMP_DBSYSTEMVALUES_COUCHBASE,\n    TMP_DBSYSTEMVALUES_COUCHDB,\n    TMP_DBSYSTEMVALUES_COSMOSDB,\n    TMP_DBSYSTEMVALUES_DYNAMODB,\n    TMP_DBSYSTEMVALUES_NEO4J,\n    TMP_DBSYSTEMVALUES_GEODE,\n    TMP_DBSYSTEMVALUES_ELASTICSEARCH,\n    TMP_DBSYSTEMVALUES_MEMCACHED,\n    TMP_DBSYSTEMVALUES_COCKROACHDB,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for DbCassandraConsistencyLevelValues enum definition\n *\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL = 'all';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = 'each_quorum';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = 'quorum';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = 'local_quorum';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE = 'one';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO = 'two';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE = 'three';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = 'local_one';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY = 'any';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = 'serial';\nvar TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = 'local_serial';\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_ALL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_ONE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_TWO = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_THREE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_ANY = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL;\n/**\n * The constant map of values for DbCassandraConsistencyLevelValues.\n * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification.\n */\nexport var DbCassandraConsistencyLevelValues = \n/*#__PURE__*/ createConstMap([\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasTriggerValues enum definition\n *\n * Type of the trigger on which the function is executed.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_FAASTRIGGERVALUES_DATASOURCE = 'datasource';\nvar TMP_FAASTRIGGERVALUES_HTTP = 'http';\nvar TMP_FAASTRIGGERVALUES_PUBSUB = 'pubsub';\nvar TMP_FAASTRIGGERVALUES_TIMER = 'timer';\nvar TMP_FAASTRIGGERVALUES_OTHER = 'other';\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_DATASOURCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASTRIGGERVALUES_DATASOURCE = TMP_FAASTRIGGERVALUES_DATASOURCE;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_HTTP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASTRIGGERVALUES_HTTP = TMP_FAASTRIGGERVALUES_HTTP;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_PUBSUB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASTRIGGERVALUES_PUBSUB = TMP_FAASTRIGGERVALUES_PUBSUB;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_TIMER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASTRIGGERVALUES_TIMER = TMP_FAASTRIGGERVALUES_TIMER;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_OTHER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASTRIGGERVALUES_OTHER = TMP_FAASTRIGGERVALUES_OTHER;\n/**\n * The constant map of values for FaasTriggerValues.\n * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification.\n */\nexport var FaasTriggerValues = \n/*#__PURE__*/ createConstMap([\n    TMP_FAASTRIGGERVALUES_DATASOURCE,\n    TMP_FAASTRIGGERVALUES_HTTP,\n    TMP_FAASTRIGGERVALUES_PUBSUB,\n    TMP_FAASTRIGGERVALUES_TIMER,\n    TMP_FAASTRIGGERVALUES_OTHER,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasDocumentOperationValues enum definition\n *\n * Describes the type of the operation that was performed on the data.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_FAASDOCUMENTOPERATIONVALUES_INSERT = 'insert';\nvar TMP_FAASDOCUMENTOPERATIONVALUES_EDIT = 'edit';\nvar TMP_FAASDOCUMENTOPERATIONVALUES_DELETE = 'delete';\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_INSERT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASDOCUMENTOPERATIONVALUES_INSERT = TMP_FAASDOCUMENTOPERATIONVALUES_INSERT;\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_EDIT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASDOCUMENTOPERATIONVALUES_EDIT = TMP_FAASDOCUMENTOPERATIONVALUES_EDIT;\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_DELETE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASDOCUMENTOPERATIONVALUES_DELETE = TMP_FAASDOCUMENTOPERATIONVALUES_DELETE;\n/**\n * The constant map of values for FaasDocumentOperationValues.\n * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification.\n */\nexport var FaasDocumentOperationValues = \n/*#__PURE__*/ createConstMap([\n    TMP_FAASDOCUMENTOPERATIONVALUES_INSERT,\n    TMP_FAASDOCUMENTOPERATIONVALUES_EDIT,\n    TMP_FAASDOCUMENTOPERATIONVALUES_DELETE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasInvokedProviderValues enum definition\n *\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud';\nvar TMP_FAASINVOKEDPROVIDERVALUES_AWS = 'aws';\nvar TMP_FAASINVOKEDPROVIDERVALUES_AZURE = 'azure';\nvar TMP_FAASINVOKEDPROVIDERVALUES_GCP = 'gcp';\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_ALIBABA_CLOUD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_AWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASINVOKEDPROVIDERVALUES_AWS = TMP_FAASINVOKEDPROVIDERVALUES_AWS;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_AZURE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASINVOKEDPROVIDERVALUES_AZURE = TMP_FAASINVOKEDPROVIDERVALUES_AZURE;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_GCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var FAASINVOKEDPROVIDERVALUES_GCP = TMP_FAASINVOKEDPROVIDERVALUES_GCP;\n/**\n * The constant map of values for FaasInvokedProviderValues.\n * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification.\n */\nexport var FaasInvokedProviderValues = \n/*#__PURE__*/ createConstMap([\n    TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD,\n    TMP_FAASINVOKEDPROVIDERVALUES_AWS,\n    TMP_FAASINVOKEDPROVIDERVALUES_AZURE,\n    TMP_FAASINVOKEDPROVIDERVALUES_GCP,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetTransportValues enum definition\n *\n * Transport protocol used. See note below.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_NETTRANSPORTVALUES_IP_TCP = 'ip_tcp';\nvar TMP_NETTRANSPORTVALUES_IP_UDP = 'ip_udp';\nvar TMP_NETTRANSPORTVALUES_IP = 'ip';\nvar TMP_NETTRANSPORTVALUES_UNIX = 'unix';\nvar TMP_NETTRANSPORTVALUES_PIPE = 'pipe';\nvar TMP_NETTRANSPORTVALUES_INPROC = 'inproc';\nvar TMP_NETTRANSPORTVALUES_OTHER = 'other';\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_IP_TCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETTRANSPORTVALUES_IP_TCP = TMP_NETTRANSPORTVALUES_IP_TCP;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_IP_UDP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETTRANSPORTVALUES_IP_UDP = TMP_NETTRANSPORTVALUES_IP_UDP;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexport var NETTRANSPORTVALUES_IP = TMP_NETTRANSPORTVALUES_IP;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexport var NETTRANSPORTVALUES_UNIX = TMP_NETTRANSPORTVALUES_UNIX;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_PIPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETTRANSPORTVALUES_PIPE = TMP_NETTRANSPORTVALUES_PIPE;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_INPROC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETTRANSPORTVALUES_INPROC = TMP_NETTRANSPORTVALUES_INPROC;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_OTHER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETTRANSPORTVALUES_OTHER = TMP_NETTRANSPORTVALUES_OTHER;\n/**\n * The constant map of values for NetTransportValues.\n * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification.\n */\nexport var NetTransportValues = \n/*#__PURE__*/ createConstMap([\n    TMP_NETTRANSPORTVALUES_IP_TCP,\n    TMP_NETTRANSPORTVALUES_IP_UDP,\n    TMP_NETTRANSPORTVALUES_IP,\n    TMP_NETTRANSPORTVALUES_UNIX,\n    TMP_NETTRANSPORTVALUES_PIPE,\n    TMP_NETTRANSPORTVALUES_INPROC,\n    TMP_NETTRANSPORTVALUES_OTHER,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionTypeValues enum definition\n *\n * The internet connection type currently being used by the host.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI = 'wifi';\nvar TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED = 'wired';\nvar TMP_NETHOSTCONNECTIONTYPEVALUES_CELL = 'cell';\nvar TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = 'unavailable';\nvar TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = 'unknown';\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_WIFI in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONTYPEVALUES_WIFI = TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_WIRED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONTYPEVALUES_WIRED = TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_CELL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONTYPEVALUES_CELL = TMP_NETHOSTCONNECTIONTYPEVALUES_CELL;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_UNAVAILABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_UNKNOWN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN;\n/**\n * The constant map of values for NetHostConnectionTypeValues.\n * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification.\n */\nexport var NetHostConnectionTypeValues = \n/*#__PURE__*/ createConstMap([\n    TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI,\n    TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED,\n    TMP_NETHOSTCONNECTIONTYPEVALUES_CELL,\n    TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE,\n    TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionSubtypeValues enum definition\n *\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = 'gprs';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = 'edge';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = 'umts';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = 'cdma';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = 'evdo_0';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = 'evdo_a';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = 'cdma2000_1xrtt';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = 'hsdpa';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = 'hsupa';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = 'hspa';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = 'iden';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = 'evdo_b';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE = 'lte';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = 'ehrpd';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = 'hspap';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM = 'gsm';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = 'td_scdma';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = 'iwlan';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR = 'nr';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = 'nrnsa';\nvar TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = 'lte_ca';\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_GPRS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EDGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_UMTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_A in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA2000_1XRTT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSDPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSUPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_IDEN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_B in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_LTE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_LTE = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EHRPD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSPAP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_GSM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_GSM = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_TD_SCDMA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_IWLAN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_NR in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_NR = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_NRNSA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_LTE_CA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA;\n/**\n * The constant map of values for NetHostConnectionSubtypeValues.\n * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification.\n */\nexport var NetHostConnectionSubtypeValues = \n/*#__PURE__*/ createConstMap([\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HttpFlavorValues enum definition\n *\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_HTTPFLAVORVALUES_HTTP_1_0 = '1.0';\nvar TMP_HTTPFLAVORVALUES_HTTP_1_1 = '1.1';\nvar TMP_HTTPFLAVORVALUES_HTTP_2_0 = '2.0';\nvar TMP_HTTPFLAVORVALUES_SPDY = 'SPDY';\nvar TMP_HTTPFLAVORVALUES_QUIC = 'QUIC';\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_1_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HTTPFLAVORVALUES_HTTP_1_0 = TMP_HTTPFLAVORVALUES_HTTP_1_0;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_1_1 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HTTPFLAVORVALUES_HTTP_1_1 = TMP_HTTPFLAVORVALUES_HTTP_1_1;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_2_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HTTPFLAVORVALUES_HTTP_2_0 = TMP_HTTPFLAVORVALUES_HTTP_2_0;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_SPDY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HTTPFLAVORVALUES_SPDY = TMP_HTTPFLAVORVALUES_SPDY;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_QUIC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HTTPFLAVORVALUES_QUIC = TMP_HTTPFLAVORVALUES_QUIC;\n/**\n * The constant map of values for HttpFlavorValues.\n * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification.\n */\nexport var HttpFlavorValues = {\n    HTTP_1_0: TMP_HTTPFLAVORVALUES_HTTP_1_0,\n    HTTP_1_1: TMP_HTTPFLAVORVALUES_HTTP_1_1,\n    HTTP_2_0: TMP_HTTPFLAVORVALUES_HTTP_2_0,\n    SPDY: TMP_HTTPFLAVORVALUES_SPDY,\n    QUIC: TMP_HTTPFLAVORVALUES_QUIC,\n};\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingDestinationKindValues enum definition\n *\n * The kind of message destination.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE = 'queue';\nvar TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC = 'topic';\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport var MESSAGINGDESTINATIONKINDVALUES_QUEUE = TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE;\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport var MESSAGINGDESTINATIONKINDVALUES_TOPIC = TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC;\n/**\n * The constant map of values for MessagingDestinationKindValues.\n * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification.\n */\nexport var MessagingDestinationKindValues = \n/*#__PURE__*/ createConstMap([\n    TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE,\n    TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingOperationValues enum definition\n *\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is &#34;send&#34;, this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_MESSAGINGOPERATIONVALUES_RECEIVE = 'receive';\nvar TMP_MESSAGINGOPERATIONVALUES_PROCESS = 'process';\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is &#34;send&#34;, this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_RECEIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var MESSAGINGOPERATIONVALUES_RECEIVE = TMP_MESSAGINGOPERATIONVALUES_RECEIVE;\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is &#34;send&#34;, this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_PROCESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var MESSAGINGOPERATIONVALUES_PROCESS = TMP_MESSAGINGOPERATIONVALUES_PROCESS;\n/**\n * The constant map of values for MessagingOperationValues.\n * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification.\n */\nexport var MessagingOperationValues = \n/*#__PURE__*/ createConstMap([\n    TMP_MESSAGINGOPERATIONVALUES_RECEIVE,\n    TMP_MESSAGINGOPERATIONVALUES_PROCESS,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for RpcGrpcStatusCodeValues enum definition\n *\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_RPCGRPCSTATUSCODEVALUES_OK = 0;\nvar TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED = 1;\nvar TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN = 2;\nvar TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = 3;\nvar TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = 4;\nvar TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND = 5;\nvar TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = 6;\nvar TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = 7;\nvar TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = 8;\nvar TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = 9;\nvar TMP_RPCGRPCSTATUSCODEVALUES_ABORTED = 10;\nvar TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = 11;\nvar TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = 12;\nvar TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL = 13;\nvar TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = 14;\nvar TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS = 15;\nvar TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = 16;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_OK in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_OK = TMP_RPCGRPCSTATUSCODEVALUES_OK;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_CANCELLED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_CANCELLED = TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNKNOWN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_UNKNOWN = TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_INVALID_ARGUMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_DEADLINE_EXCEEDED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_NOT_FOUND in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_NOT_FOUND = TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_ALREADY_EXISTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_PERMISSION_DENIED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_RESOURCE_EXHAUSTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_FAILED_PRECONDITION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_ABORTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_ABORTED = TMP_RPCGRPCSTATUSCODEVALUES_ABORTED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_OUT_OF_RANGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNIMPLEMENTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_INTERNAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_INTERNAL = TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNAVAILABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_DATA_LOSS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_DATA_LOSS = TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNAUTHENTICATED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED;\n/**\n * The constant map of values for RpcGrpcStatusCodeValues.\n * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification.\n */\nexport var RpcGrpcStatusCodeValues = {\n    OK: TMP_RPCGRPCSTATUSCODEVALUES_OK,\n    CANCELLED: TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED,\n    UNKNOWN: TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN,\n    INVALID_ARGUMENT: TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT,\n    DEADLINE_EXCEEDED: TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED,\n    NOT_FOUND: TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND,\n    ALREADY_EXISTS: TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS,\n    PERMISSION_DENIED: TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED,\n    RESOURCE_EXHAUSTED: TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED,\n    FAILED_PRECONDITION: TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION,\n    ABORTED: TMP_RPCGRPCSTATUSCODEVALUES_ABORTED,\n    OUT_OF_RANGE: TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE,\n    UNIMPLEMENTED: TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED,\n    INTERNAL: TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL,\n    UNAVAILABLE: TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE,\n    DATA_LOSS: TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS,\n    UNAUTHENTICATED: TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED,\n};\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessageTypeValues enum definition\n *\n * Whether this is a received or sent message.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_MESSAGETYPEVALUES_SENT = 'SENT';\nvar TMP_MESSAGETYPEVALUES_RECEIVED = 'RECEIVED';\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use MESSAGE_TYPE_VALUE_SENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var MESSAGETYPEVALUES_SENT = TMP_MESSAGETYPEVALUES_SENT;\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use MESSAGE_TYPE_VALUE_RECEIVED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var MESSAGETYPEVALUES_RECEIVED = TMP_MESSAGETYPEVALUES_RECEIVED;\n/**\n * The constant map of values for MessageTypeValues.\n * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification.\n */\nexport var MessageTypeValues = \n/*#__PURE__*/ createConstMap([\n    TMP_MESSAGETYPEVALUES_SENT,\n    TMP_MESSAGETYPEVALUES_RECEIVED,\n]);\n//# sourceMappingURL=SemanticAttributes.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only one-level deep at this point,\n * and should not cause problems for tree-shakers.\n */\nexport * from './SemanticAttributes';\n//# sourceMappingURL=index.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createConstMap } from '../internal/utils';\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticResourceAttributes\n//----------------------------------------------------------------------------------------------------------\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_CLOUD_PROVIDER = 'cloud.provider';\nvar TMP_CLOUD_ACCOUNT_ID = 'cloud.account.id';\nvar TMP_CLOUD_REGION = 'cloud.region';\nvar TMP_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone';\nvar TMP_CLOUD_PLATFORM = 'cloud.platform';\nvar TMP_AWS_ECS_CONTAINER_ARN = 'aws.ecs.container.arn';\nvar TMP_AWS_ECS_CLUSTER_ARN = 'aws.ecs.cluster.arn';\nvar TMP_AWS_ECS_LAUNCHTYPE = 'aws.ecs.launchtype';\nvar TMP_AWS_ECS_TASK_ARN = 'aws.ecs.task.arn';\nvar TMP_AWS_ECS_TASK_FAMILY = 'aws.ecs.task.family';\nvar TMP_AWS_ECS_TASK_REVISION = 'aws.ecs.task.revision';\nvar TMP_AWS_EKS_CLUSTER_ARN = 'aws.eks.cluster.arn';\nvar TMP_AWS_LOG_GROUP_NAMES = 'aws.log.group.names';\nvar TMP_AWS_LOG_GROUP_ARNS = 'aws.log.group.arns';\nvar TMP_AWS_LOG_STREAM_NAMES = 'aws.log.stream.names';\nvar TMP_AWS_LOG_STREAM_ARNS = 'aws.log.stream.arns';\nvar TMP_CONTAINER_NAME = 'container.name';\nvar TMP_CONTAINER_ID = 'container.id';\nvar TMP_CONTAINER_RUNTIME = 'container.runtime';\nvar TMP_CONTAINER_IMAGE_NAME = 'container.image.name';\nvar TMP_CONTAINER_IMAGE_TAG = 'container.image.tag';\nvar TMP_DEPLOYMENT_ENVIRONMENT = 'deployment.environment';\nvar TMP_DEVICE_ID = 'device.id';\nvar TMP_DEVICE_MODEL_IDENTIFIER = 'device.model.identifier';\nvar TMP_DEVICE_MODEL_NAME = 'device.model.name';\nvar TMP_FAAS_NAME = 'faas.name';\nvar TMP_FAAS_ID = 'faas.id';\nvar TMP_FAAS_VERSION = 'faas.version';\nvar TMP_FAAS_INSTANCE = 'faas.instance';\nvar TMP_FAAS_MAX_MEMORY = 'faas.max_memory';\nvar TMP_HOST_ID = 'host.id';\nvar TMP_HOST_NAME = 'host.name';\nvar TMP_HOST_TYPE = 'host.type';\nvar TMP_HOST_ARCH = 'host.arch';\nvar TMP_HOST_IMAGE_NAME = 'host.image.name';\nvar TMP_HOST_IMAGE_ID = 'host.image.id';\nvar TMP_HOST_IMAGE_VERSION = 'host.image.version';\nvar TMP_K8S_CLUSTER_NAME = 'k8s.cluster.name';\nvar TMP_K8S_NODE_NAME = 'k8s.node.name';\nvar TMP_K8S_NODE_UID = 'k8s.node.uid';\nvar TMP_K8S_NAMESPACE_NAME = 'k8s.namespace.name';\nvar TMP_K8S_POD_UID = 'k8s.pod.uid';\nvar TMP_K8S_POD_NAME = 'k8s.pod.name';\nvar TMP_K8S_CONTAINER_NAME = 'k8s.container.name';\nvar TMP_K8S_REPLICASET_UID = 'k8s.replicaset.uid';\nvar TMP_K8S_REPLICASET_NAME = 'k8s.replicaset.name';\nvar TMP_K8S_DEPLOYMENT_UID = 'k8s.deployment.uid';\nvar TMP_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name';\nvar TMP_K8S_STATEFULSET_UID = 'k8s.statefulset.uid';\nvar TMP_K8S_STATEFULSET_NAME = 'k8s.statefulset.name';\nvar TMP_K8S_DAEMONSET_UID = 'k8s.daemonset.uid';\nvar TMP_K8S_DAEMONSET_NAME = 'k8s.daemonset.name';\nvar TMP_K8S_JOB_UID = 'k8s.job.uid';\nvar TMP_K8S_JOB_NAME = 'k8s.job.name';\nvar TMP_K8S_CRONJOB_UID = 'k8s.cronjob.uid';\nvar TMP_K8S_CRONJOB_NAME = 'k8s.cronjob.name';\nvar TMP_OS_TYPE = 'os.type';\nvar TMP_OS_DESCRIPTION = 'os.description';\nvar TMP_OS_NAME = 'os.name';\nvar TMP_OS_VERSION = 'os.version';\nvar TMP_PROCESS_PID = 'process.pid';\nvar TMP_PROCESS_EXECUTABLE_NAME = 'process.executable.name';\nvar TMP_PROCESS_EXECUTABLE_PATH = 'process.executable.path';\nvar TMP_PROCESS_COMMAND = 'process.command';\nvar TMP_PROCESS_COMMAND_LINE = 'process.command_line';\nvar TMP_PROCESS_COMMAND_ARGS = 'process.command_args';\nvar TMP_PROCESS_OWNER = 'process.owner';\nvar TMP_PROCESS_RUNTIME_NAME = 'process.runtime.name';\nvar TMP_PROCESS_RUNTIME_VERSION = 'process.runtime.version';\nvar TMP_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description';\nvar TMP_SERVICE_NAME = 'service.name';\nvar TMP_SERVICE_NAMESPACE = 'service.namespace';\nvar TMP_SERVICE_INSTANCE_ID = 'service.instance.id';\nvar TMP_SERVICE_VERSION = 'service.version';\nvar TMP_TELEMETRY_SDK_NAME = 'telemetry.sdk.name';\nvar TMP_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language';\nvar TMP_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version';\nvar TMP_TELEMETRY_AUTO_VERSION = 'telemetry.auto.version';\nvar TMP_WEBENGINE_NAME = 'webengine.name';\nvar TMP_WEBENGINE_VERSION = 'webengine.version';\nvar TMP_WEBENGINE_DESCRIPTION = 'webengine.description';\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use ATTR_CLOUD_PROVIDER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CLOUD_PROVIDER = TMP_CLOUD_PROVIDER;\n/**\n * The cloud account ID the resource is assigned to.\n *\n * @deprecated Use ATTR_CLOUD_ACCOUNT_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CLOUD_ACCOUNT_ID = TMP_CLOUD_ACCOUNT_ID;\n/**\n * The geographical region the resource is running. Refer to your provider&#39;s docs to see the available regions, for example [Alibaba Cloud regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), [AWS regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), [Azure regions](https://azure.microsoft.com/en-us/global-infrastructure/geographies/), or [Google Cloud regions](https://cloud.google.com/about/locations).\n *\n * @deprecated Use ATTR_CLOUD_REGION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CLOUD_REGION = TMP_CLOUD_REGION;\n/**\n * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running.\n *\n * Note: Availability zones are called &#34;zones&#34; on Alibaba Cloud and Google Cloud.\n *\n * @deprecated Use ATTR_CLOUD_AVAILABILITY_ZONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CLOUD_AVAILABILITY_ZONE = TMP_CLOUD_AVAILABILITY_ZONE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use ATTR_CLOUD_PLATFORM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CLOUD_PLATFORM = TMP_CLOUD_PLATFORM;\n/**\n * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html).\n *\n * @deprecated Use ATTR_AWS_ECS_CONTAINER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_ECS_CONTAINER_ARN = TMP_AWS_ECS_CONTAINER_ARN;\n/**\n * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).\n *\n * @deprecated Use ATTR_AWS_ECS_CLUSTER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_ECS_CLUSTER_ARN = TMP_AWS_ECS_CLUSTER_ARN;\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use ATTR_AWS_ECS_LAUNCHTYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_ECS_LAUNCHTYPE = TMP_AWS_ECS_LAUNCHTYPE;\n/**\n * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html).\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_ECS_TASK_ARN = TMP_AWS_ECS_TASK_ARN;\n/**\n * The task definition family this task definition is a member of.\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_FAMILY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_ECS_TASK_FAMILY = TMP_AWS_ECS_TASK_FAMILY;\n/**\n * The revision for this task definition.\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_REVISION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_ECS_TASK_REVISION = TMP_AWS_ECS_TASK_REVISION;\n/**\n * The ARN of an EKS cluster.\n *\n * @deprecated Use ATTR_AWS_EKS_CLUSTER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_EKS_CLUSTER_ARN = TMP_AWS_EKS_CLUSTER_ARN;\n/**\n * The name(s) of the AWS log group(s) an application is writing to.\n *\n * Note: Multiple log groups must be supported for cases like multi-container applications, where a single application has sidecar containers, and each write to their own log group.\n *\n * @deprecated Use ATTR_AWS_LOG_GROUP_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_LOG_GROUP_NAMES = TMP_AWS_LOG_GROUP_NAMES;\n/**\n * The Amazon Resource Name(s) (ARN) of the AWS log group(s).\n *\n * Note: See the [log group ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format).\n *\n * @deprecated Use ATTR_AWS_LOG_GROUP_ARNS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_LOG_GROUP_ARNS = TMP_AWS_LOG_GROUP_ARNS;\n/**\n * The name(s) of the AWS log stream(s) an application is writing to.\n *\n * @deprecated Use ATTR_AWS_LOG_STREAM_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_LOG_STREAM_NAMES = TMP_AWS_LOG_STREAM_NAMES;\n/**\n * The ARN(s) of the AWS log stream(s).\n *\n * Note: See the [log stream ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). One log group can contain several log streams, so these ARNs necessarily identify both a log group and a log stream.\n *\n * @deprecated Use ATTR_AWS_LOG_STREAM_ARNS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_AWS_LOG_STREAM_ARNS = TMP_AWS_LOG_STREAM_ARNS;\n/**\n * Container name.\n *\n * @deprecated Use ATTR_CONTAINER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CONTAINER_NAME = TMP_CONTAINER_NAME;\n/**\n * Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/reference/run/#container-identification). The UUID might be abbreviated.\n *\n * @deprecated Use ATTR_CONTAINER_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CONTAINER_ID = TMP_CONTAINER_ID;\n/**\n * The container runtime managing this container.\n *\n * @deprecated Use ATTR_CONTAINER_RUNTIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CONTAINER_RUNTIME = TMP_CONTAINER_RUNTIME;\n/**\n * Name of the image the container was built on.\n *\n * @deprecated Use ATTR_CONTAINER_IMAGE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CONTAINER_IMAGE_NAME = TMP_CONTAINER_IMAGE_NAME;\n/**\n * Container image tag.\n *\n * @deprecated Use ATTR_CONTAINER_IMAGE_TAGS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_CONTAINER_IMAGE_TAG = TMP_CONTAINER_IMAGE_TAG;\n/**\n * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier).\n *\n * @deprecated Use ATTR_DEPLOYMENT_ENVIRONMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_DEPLOYMENT_ENVIRONMENT = TMP_DEPLOYMENT_ENVIRONMENT;\n/**\n * A unique identifier representing the device.\n *\n * Note: The device identifier MUST only be defined using the values outlined below. This value is not an advertising identifier and MUST NOT be used as such. On iOS (Swift or Objective-C), this value MUST be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android (Java or Kotlin), this value MUST be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application. More information can be found [here](https://developer.android.com/training/articles/user-data-ids) on best practices and exact implementation details. Caution should be taken when storing personal data or anything which can identify a user. GDPR and data protection laws may apply, ensure you do your own due diligence.\n *\n * @deprecated Use ATTR_DEVICE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_DEVICE_ID = TMP_DEVICE_ID;\n/**\n * The model identifier for the device.\n *\n * Note: It&#39;s recommended this value represents a machine readable version of the model identifier rather than the market or consumer-friendly name of the device.\n *\n * @deprecated Use ATTR_DEVICE_MODEL_IDENTIFIER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_DEVICE_MODEL_IDENTIFIER = TMP_DEVICE_MODEL_IDENTIFIER;\n/**\n * The marketing name for the device model.\n *\n * Note: It&#39;s recommended this value represents a human readable version of the device model rather than a machine readable alternative.\n *\n * @deprecated Use ATTR_DEVICE_MODEL_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_DEVICE_MODEL_NAME = TMP_DEVICE_MODEL_NAME;\n/**\n * The name of the single function that this runtime instance executes.\n *\n * Note: This is the name of the function as configured/deployed on the FaaS platform and is usually different from the name of the callback function (which may be stored in the [`code.namespace`/`code.function`](../../trace/semantic_conventions/span-general.md#source-code-attributes) span attributes).\n *\n * @deprecated Use ATTR_FAAS_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_FAAS_NAME = TMP_FAAS_NAME;\n/**\n* The unique ID of the single function that this runtime instance executes.\n*\n* Note: Depending on the cloud provider, use:\n\n* **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).\nTake care not to use the &#34;invoked ARN&#34; directly but replace any\n[alias suffix](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) with the resolved function version, as the same runtime instance may be invokable with multiple\ndifferent aliases.\n* **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names)\n* **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id).\n\nOn some providers, it may not be possible to determine the full ID at startup,\nwhich is why this field cannot be made required. For example, on AWS the account ID\npart of the ARN is not available without calling another AWS API\nwhich may be deemed too slow for a short-running lambda function.\nAs an alternative, consider setting `faas.id` as a span attribute instead.\n*\n* @deprecated Use ATTR_CLOUD_RESOURCE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexport var SEMRESATTRS_FAAS_ID = TMP_FAAS_ID;\n/**\n* The immutable version of the function being executed.\n*\n* Note: Depending on the cloud provider and platform, use:\n\n* **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html)\n  (an integer represented as a decimal string).\n* **Google Cloud Run:** The [revision](https://cloud.google.com/run/docs/managing/revisions)\n  (i.e., the function name plus the revision suffix).\n* **Google Cloud Functions:** The value of the\n  [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically).\n* **Azure Functions:** Not applicable. Do not set this attribute.\n*\n* @deprecated Use ATTR_FAAS_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexport var SEMRESATTRS_FAAS_VERSION = TMP_FAAS_VERSION;\n/**\n * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version.\n *\n * Note: * **AWS Lambda:** Use the (full) log stream name.\n *\n * @deprecated Use ATTR_FAAS_INSTANCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_FAAS_INSTANCE = TMP_FAAS_INSTANCE;\n/**\n * The amount of memory available to the serverless function in MiB.\n *\n * Note: It&#39;s recommended to set this attribute since e.g. too little memory can easily stop a Java AWS Lambda function from working correctly. On AWS Lambda, the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this information.\n *\n * @deprecated Use ATTR_FAAS_MAX_MEMORY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_FAAS_MAX_MEMORY = TMP_FAAS_MAX_MEMORY;\n/**\n * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider.\n *\n * @deprecated Use ATTR_HOST_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_HOST_ID = TMP_HOST_ID;\n/**\n * Name of the host. On Unix systems, it may contain what the hostname command returns, or the fully qualified hostname, or another name specified by the user.\n *\n * @deprecated Use ATTR_HOST_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_HOST_NAME = TMP_HOST_NAME;\n/**\n * Type of host. For Cloud, this must be the machine type.\n *\n * @deprecated Use ATTR_HOST_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_HOST_TYPE = TMP_HOST_TYPE;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use ATTR_HOST_ARCH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_HOST_ARCH = TMP_HOST_ARCH;\n/**\n * Name of the VM image or OS install the host was instantiated from.\n *\n * @deprecated Use ATTR_HOST_IMAGE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_HOST_IMAGE_NAME = TMP_HOST_IMAGE_NAME;\n/**\n * VM image ID. For Cloud, this value is from the provider.\n *\n * @deprecated Use ATTR_HOST_IMAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_HOST_IMAGE_ID = TMP_HOST_IMAGE_ID;\n/**\n * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes).\n *\n * @deprecated Use ATTR_HOST_IMAGE_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_HOST_IMAGE_VERSION = TMP_HOST_IMAGE_VERSION;\n/**\n * The name of the cluster.\n *\n * @deprecated Use ATTR_K8S_CLUSTER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_CLUSTER_NAME = TMP_K8S_CLUSTER_NAME;\n/**\n * The name of the Node.\n *\n * @deprecated Use ATTR_K8S_NODE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_NODE_NAME = TMP_K8S_NODE_NAME;\n/**\n * The UID of the Node.\n *\n * @deprecated Use ATTR_K8S_NODE_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_NODE_UID = TMP_K8S_NODE_UID;\n/**\n * The name of the namespace that the pod is running in.\n *\n * @deprecated Use ATTR_K8S_NAMESPACE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_NAMESPACE_NAME = TMP_K8S_NAMESPACE_NAME;\n/**\n * The UID of the Pod.\n *\n * @deprecated Use ATTR_K8S_POD_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_POD_UID = TMP_K8S_POD_UID;\n/**\n * The name of the Pod.\n *\n * @deprecated Use ATTR_K8S_POD_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_POD_NAME = TMP_K8S_POD_NAME;\n/**\n * The name of the Container in a Pod template.\n *\n * @deprecated Use ATTR_K8S_CONTAINER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_CONTAINER_NAME = TMP_K8S_CONTAINER_NAME;\n/**\n * The UID of the ReplicaSet.\n *\n * @deprecated Use ATTR_K8S_REPLICASET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_REPLICASET_UID = TMP_K8S_REPLICASET_UID;\n/**\n * The name of the ReplicaSet.\n *\n * @deprecated Use ATTR_K8S_REPLICASET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_REPLICASET_NAME = TMP_K8S_REPLICASET_NAME;\n/**\n * The UID of the Deployment.\n *\n * @deprecated Use ATTR_K8S_DEPLOYMENT_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_DEPLOYMENT_UID = TMP_K8S_DEPLOYMENT_UID;\n/**\n * The name of the Deployment.\n *\n * @deprecated Use ATTR_K8S_DEPLOYMENT_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_DEPLOYMENT_NAME = TMP_K8S_DEPLOYMENT_NAME;\n/**\n * The UID of the StatefulSet.\n *\n * @deprecated Use ATTR_K8S_STATEFULSET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_STATEFULSET_UID = TMP_K8S_STATEFULSET_UID;\n/**\n * The name of the StatefulSet.\n *\n * @deprecated Use ATTR_K8S_STATEFULSET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_STATEFULSET_NAME = TMP_K8S_STATEFULSET_NAME;\n/**\n * The UID of the DaemonSet.\n *\n * @deprecated Use ATTR_K8S_DAEMONSET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_DAEMONSET_UID = TMP_K8S_DAEMONSET_UID;\n/**\n * The name of the DaemonSet.\n *\n * @deprecated Use ATTR_K8S_DAEMONSET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_DAEMONSET_NAME = TMP_K8S_DAEMONSET_NAME;\n/**\n * The UID of the Job.\n *\n * @deprecated Use ATTR_K8S_JOB_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_JOB_UID = TMP_K8S_JOB_UID;\n/**\n * The name of the Job.\n *\n * @deprecated Use ATTR_K8S_JOB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_JOB_NAME = TMP_K8S_JOB_NAME;\n/**\n * The UID of the CronJob.\n *\n * @deprecated Use ATTR_K8S_CRONJOB_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_CRONJOB_UID = TMP_K8S_CRONJOB_UID;\n/**\n * The name of the CronJob.\n *\n * @deprecated Use ATTR_K8S_CRONJOB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_K8S_CRONJOB_NAME = TMP_K8S_CRONJOB_NAME;\n/**\n * The operating system type.\n *\n * @deprecated Use ATTR_OS_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_OS_TYPE = TMP_OS_TYPE;\n/**\n * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands.\n *\n * @deprecated Use ATTR_OS_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_OS_DESCRIPTION = TMP_OS_DESCRIPTION;\n/**\n * Human readable operating system name.\n *\n * @deprecated Use ATTR_OS_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_OS_NAME = TMP_OS_NAME;\n/**\n * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes).\n *\n * @deprecated Use ATTR_OS_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_OS_VERSION = TMP_OS_VERSION;\n/**\n * Process identifier (PID).\n *\n * @deprecated Use ATTR_PROCESS_PID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_PID = TMP_PROCESS_PID;\n/**\n * The name of the process executable. On Linux based systems, can be set to the `Name` in `proc/[pid]/status`. On Windows, can be set to the base name of `GetProcessImageFileNameW`.\n *\n * @deprecated Use ATTR_PROCESS_EXECUTABLE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_EXECUTABLE_NAME = TMP_PROCESS_EXECUTABLE_NAME;\n/**\n * The full path to the process executable. On Linux based systems, can be set to the target of `proc/[pid]/exe`. On Windows, can be set to the result of `GetProcessImageFileNameW`.\n *\n * @deprecated Use ATTR_PROCESS_EXECUTABLE_PATH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_EXECUTABLE_PATH = TMP_PROCESS_EXECUTABLE_PATH;\n/**\n * The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter extracted from `GetCommandLineW`.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_COMMAND = TMP_PROCESS_COMMAND;\n/**\n * The full command used to launch the process as a single string representing the full command. On Windows, can be set to the result of `GetCommandLineW`. Do not set this if you have to assemble it just for monitoring; use `process.command_args` instead.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND_LINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_COMMAND_LINE = TMP_PROCESS_COMMAND_LINE;\n/**\n * All the command arguments (including the command/executable itself) as received by the process. On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according to the list of null-delimited strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this would be the full argv vector passed to `main`.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND_ARGS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_COMMAND_ARGS = TMP_PROCESS_COMMAND_ARGS;\n/**\n * The username of the user that owns the process.\n *\n * @deprecated Use ATTR_PROCESS_OWNER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_OWNER = TMP_PROCESS_OWNER;\n/**\n * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_RUNTIME_NAME = TMP_PROCESS_RUNTIME_NAME;\n/**\n * The version of the runtime of this process, as returned by the runtime without modification.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_RUNTIME_VERSION = TMP_PROCESS_RUNTIME_VERSION;\n/**\n * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION = TMP_PROCESS_RUNTIME_DESCRIPTION;\n/**\n * Logical name of the service.\n *\n * Note: MUST be the same for all instances of horizontally scaled services. If the value was not specified, SDKs MUST fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md#process), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value MUST be set to `unknown_service`.\n *\n * @deprecated Use ATTR_SERVICE_NAME.\n */\nexport var SEMRESATTRS_SERVICE_NAME = TMP_SERVICE_NAME;\n/**\n * A namespace for `service.name`.\n *\n * Note: A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n *\n * @deprecated Use ATTR_SERVICE_NAMESPACE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_SERVICE_NAMESPACE = TMP_SERVICE_NAMESPACE;\n/**\n * The string ID of the service instance.\n *\n * Note: MUST be unique for each instance of the same `service.namespace,service.name` pair (in other words `service.namespace,service.name,service.instance.id` triplet MUST be globally unique). The ID helps to distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled service). It is preferable for the ID to be persistent and stay the same for the lifetime of the service instance, however it is acceptable that the ID is ephemeral and changes during important lifetime events for the service (e.g. service restarts). If the service has no inherent unique ID that can be used as the value of this attribute it is recommended to generate a random Version 1 or Version 4 RFC 4122 UUID (services aiming for reproducible UUIDs may also use Version 5, see RFC 4122 for more recommendations).\n *\n * @deprecated Use ATTR_SERVICE_INSTANCE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_SERVICE_INSTANCE_ID = TMP_SERVICE_INSTANCE_ID;\n/**\n * The version string of the service API or implementation.\n *\n * @deprecated Use ATTR_SERVICE_VERSION.\n */\nexport var SEMRESATTRS_SERVICE_VERSION = TMP_SERVICE_VERSION;\n/**\n * The name of the telemetry SDK as defined above.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_NAME.\n */\nexport var SEMRESATTRS_TELEMETRY_SDK_NAME = TMP_TELEMETRY_SDK_NAME;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_LANGUAGE.\n */\nexport var SEMRESATTRS_TELEMETRY_SDK_LANGUAGE = TMP_TELEMETRY_SDK_LANGUAGE;\n/**\n * The version string of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_VERSION.\n */\nexport var SEMRESATTRS_TELEMETRY_SDK_VERSION = TMP_TELEMETRY_SDK_VERSION;\n/**\n * The version string of the auto instrumentation agent, if used.\n *\n * @deprecated Use ATTR_TELEMETRY_DISTRO_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_TELEMETRY_AUTO_VERSION = TMP_TELEMETRY_AUTO_VERSION;\n/**\n * The name of the web engine.\n *\n * @deprecated Use ATTR_WEBENGINE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_WEBENGINE_NAME = TMP_WEBENGINE_NAME;\n/**\n * The version of the web engine.\n *\n * @deprecated Use ATTR_WEBENGINE_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_WEBENGINE_VERSION = TMP_WEBENGINE_VERSION;\n/**\n * Additional description of the web engine (e.g. detailed version and edition information).\n *\n * @deprecated Use ATTR_WEBENGINE_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var SEMRESATTRS_WEBENGINE_DESCRIPTION = TMP_WEBENGINE_DESCRIPTION;\n/**\n * Create exported Value Map for SemanticResourceAttributes values\n * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification\n */\nexport var SemanticResourceAttributes = \n/*#__PURE__*/ createConstMap([\n    TMP_CLOUD_PROVIDER,\n    TMP_CLOUD_ACCOUNT_ID,\n    TMP_CLOUD_REGION,\n    TMP_CLOUD_AVAILABILITY_ZONE,\n    TMP_CLOUD_PLATFORM,\n    TMP_AWS_ECS_CONTAINER_ARN,\n    TMP_AWS_ECS_CLUSTER_ARN,\n    TMP_AWS_ECS_LAUNCHTYPE,\n    TMP_AWS_ECS_TASK_ARN,\n    TMP_AWS_ECS_TASK_FAMILY,\n    TMP_AWS_ECS_TASK_REVISION,\n    TMP_AWS_EKS_CLUSTER_ARN,\n    TMP_AWS_LOG_GROUP_NAMES,\n    TMP_AWS_LOG_GROUP_ARNS,\n    TMP_AWS_LOG_STREAM_NAMES,\n    TMP_AWS_LOG_STREAM_ARNS,\n    TMP_CONTAINER_NAME,\n    TMP_CONTAINER_ID,\n    TMP_CONTAINER_RUNTIME,\n    TMP_CONTAINER_IMAGE_NAME,\n    TMP_CONTAINER_IMAGE_TAG,\n    TMP_DEPLOYMENT_ENVIRONMENT,\n    TMP_DEVICE_ID,\n    TMP_DEVICE_MODEL_IDENTIFIER,\n    TMP_DEVICE_MODEL_NAME,\n    TMP_FAAS_NAME,\n    TMP_FAAS_ID,\n    TMP_FAAS_VERSION,\n    TMP_FAAS_INSTANCE,\n    TMP_FAAS_MAX_MEMORY,\n    TMP_HOST_ID,\n    TMP_HOST_NAME,\n    TMP_HOST_TYPE,\n    TMP_HOST_ARCH,\n    TMP_HOST_IMAGE_NAME,\n    TMP_HOST_IMAGE_ID,\n    TMP_HOST_IMAGE_VERSION,\n    TMP_K8S_CLUSTER_NAME,\n    TMP_K8S_NODE_NAME,\n    TMP_K8S_NODE_UID,\n    TMP_K8S_NAMESPACE_NAME,\n    TMP_K8S_POD_UID,\n    TMP_K8S_POD_NAME,\n    TMP_K8S_CONTAINER_NAME,\n    TMP_K8S_REPLICASET_UID,\n    TMP_K8S_REPLICASET_NAME,\n    TMP_K8S_DEPLOYMENT_UID,\n    TMP_K8S_DEPLOYMENT_NAME,\n    TMP_K8S_STATEFULSET_UID,\n    TMP_K8S_STATEFULSET_NAME,\n    TMP_K8S_DAEMONSET_UID,\n    TMP_K8S_DAEMONSET_NAME,\n    TMP_K8S_JOB_UID,\n    TMP_K8S_JOB_NAME,\n    TMP_K8S_CRONJOB_UID,\n    TMP_K8S_CRONJOB_NAME,\n    TMP_OS_TYPE,\n    TMP_OS_DESCRIPTION,\n    TMP_OS_NAME,\n    TMP_OS_VERSION,\n    TMP_PROCESS_PID,\n    TMP_PROCESS_EXECUTABLE_NAME,\n    TMP_PROCESS_EXECUTABLE_PATH,\n    TMP_PROCESS_COMMAND,\n    TMP_PROCESS_COMMAND_LINE,\n    TMP_PROCESS_COMMAND_ARGS,\n    TMP_PROCESS_OWNER,\n    TMP_PROCESS_RUNTIME_NAME,\n    TMP_PROCESS_RUNTIME_VERSION,\n    TMP_PROCESS_RUNTIME_DESCRIPTION,\n    TMP_SERVICE_NAME,\n    TMP_SERVICE_NAMESPACE,\n    TMP_SERVICE_INSTANCE_ID,\n    TMP_SERVICE_VERSION,\n    TMP_TELEMETRY_SDK_NAME,\n    TMP_TELEMETRY_SDK_LANGUAGE,\n    TMP_TELEMETRY_SDK_VERSION,\n    TMP_TELEMETRY_AUTO_VERSION,\n    TMP_WEBENGINE_NAME,\n    TMP_WEBENGINE_VERSION,\n    TMP_WEBENGINE_DESCRIPTION,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudProviderValues enum definition\n *\n * Name of the cloud provider.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud';\nvar TMP_CLOUDPROVIDERVALUES_AWS = 'aws';\nvar TMP_CLOUDPROVIDERVALUES_AZURE = 'azure';\nvar TMP_CLOUDPROVIDERVALUES_GCP = 'gcp';\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_ALIBABA_CLOUD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPROVIDERVALUES_ALIBABA_CLOUD = TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD;\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_AWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPROVIDERVALUES_AWS = TMP_CLOUDPROVIDERVALUES_AWS;\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_AZURE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPROVIDERVALUES_AZURE = TMP_CLOUDPROVIDERVALUES_AZURE;\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_GCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPROVIDERVALUES_GCP = TMP_CLOUDPROVIDERVALUES_GCP;\n/**\n * The constant map of values for CloudProviderValues.\n * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification.\n */\nexport var CloudProviderValues = \n/*#__PURE__*/ createConstMap([\n    TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD,\n    TMP_CLOUDPROVIDERVALUES_AWS,\n    TMP_CLOUDPROVIDERVALUES_AZURE,\n    TMP_CLOUDPROVIDERVALUES_GCP,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudPlatformValues enum definition\n *\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = 'alibaba_cloud_ecs';\nvar TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = 'alibaba_cloud_fc';\nvar TMP_CLOUDPLATFORMVALUES_AWS_EC2 = 'aws_ec2';\nvar TMP_CLOUDPLATFORMVALUES_AWS_ECS = 'aws_ecs';\nvar TMP_CLOUDPLATFORMVALUES_AWS_EKS = 'aws_eks';\nvar TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA = 'aws_lambda';\nvar TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = 'aws_elastic_beanstalk';\nvar TMP_CLOUDPLATFORMVALUES_AZURE_VM = 'azure_vm';\nvar TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = 'azure_container_instances';\nvar TMP_CLOUDPLATFORMVALUES_AZURE_AKS = 'azure_aks';\nvar TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = 'azure_functions';\nvar TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = 'azure_app_service';\nvar TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = 'gcp_compute_engine';\nvar TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = 'gcp_cloud_run';\nvar TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = 'gcp_kubernetes_engine';\nvar TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = 'gcp_cloud_functions';\nvar TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE = 'gcp_app_engine';\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_ECS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_FC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_EC2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AWS_EC2 = TMP_CLOUDPLATFORMVALUES_AWS_EC2;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_ECS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AWS_ECS = TMP_CLOUDPLATFORMVALUES_AWS_ECS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_EKS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AWS_EKS = TMP_CLOUDPLATFORMVALUES_AWS_EKS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_LAMBDA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AWS_LAMBDA = TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_VM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AZURE_VM = TMP_CLOUDPLATFORMVALUES_AZURE_VM;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_INSTANCES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_AKS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AZURE_AKS = TMP_CLOUDPLATFORMVALUES_AZURE_AKS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_FUNCTIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_APP_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_COMPUTE_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_CLOUD_RUN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_KUBERNETES_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_CLOUD_FUNCTIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_APP_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var CLOUDPLATFORMVALUES_GCP_APP_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE;\n/**\n * The constant map of values for CloudPlatformValues.\n * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification.\n */\nexport var CloudPlatformValues = \n/*#__PURE__*/ createConstMap([\n    TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS,\n    TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC,\n    TMP_CLOUDPLATFORMVALUES_AWS_EC2,\n    TMP_CLOUDPLATFORMVALUES_AWS_ECS,\n    TMP_CLOUDPLATFORMVALUES_AWS_EKS,\n    TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA,\n    TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK,\n    TMP_CLOUDPLATFORMVALUES_AZURE_VM,\n    TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES,\n    TMP_CLOUDPLATFORMVALUES_AZURE_AKS,\n    TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS,\n    TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE,\n    TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE,\n    TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN,\n    TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE,\n    TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS,\n    TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for AwsEcsLaunchtypeValues enum definition\n *\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_AWSECSLAUNCHTYPEVALUES_EC2 = 'ec2';\nvar TMP_AWSECSLAUNCHTYPEVALUES_FARGATE = 'fargate';\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use AWS_ECS_LAUNCHTYPE_VALUE_EC2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var AWSECSLAUNCHTYPEVALUES_EC2 = TMP_AWSECSLAUNCHTYPEVALUES_EC2;\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use AWS_ECS_LAUNCHTYPE_VALUE_FARGATE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var AWSECSLAUNCHTYPEVALUES_FARGATE = TMP_AWSECSLAUNCHTYPEVALUES_FARGATE;\n/**\n * The constant map of values for AwsEcsLaunchtypeValues.\n * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification.\n */\nexport var AwsEcsLaunchtypeValues = \n/*#__PURE__*/ createConstMap([\n    TMP_AWSECSLAUNCHTYPEVALUES_EC2,\n    TMP_AWSECSLAUNCHTYPEVALUES_FARGATE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HostArchValues enum definition\n *\n * The CPU architecture the host system is running on.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_HOSTARCHVALUES_AMD64 = 'amd64';\nvar TMP_HOSTARCHVALUES_ARM32 = 'arm32';\nvar TMP_HOSTARCHVALUES_ARM64 = 'arm64';\nvar TMP_HOSTARCHVALUES_IA64 = 'ia64';\nvar TMP_HOSTARCHVALUES_PPC32 = 'ppc32';\nvar TMP_HOSTARCHVALUES_PPC64 = 'ppc64';\nvar TMP_HOSTARCHVALUES_X86 = 'x86';\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_AMD64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HOSTARCHVALUES_AMD64 = TMP_HOSTARCHVALUES_AMD64;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_ARM32 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HOSTARCHVALUES_ARM32 = TMP_HOSTARCHVALUES_ARM32;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_ARM64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HOSTARCHVALUES_ARM64 = TMP_HOSTARCHVALUES_ARM64;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_IA64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HOSTARCHVALUES_IA64 = TMP_HOSTARCHVALUES_IA64;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_PPC32 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HOSTARCHVALUES_PPC32 = TMP_HOSTARCHVALUES_PPC32;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_PPC64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HOSTARCHVALUES_PPC64 = TMP_HOSTARCHVALUES_PPC64;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_X86 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var HOSTARCHVALUES_X86 = TMP_HOSTARCHVALUES_X86;\n/**\n * The constant map of values for HostArchValues.\n * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification.\n */\nexport var HostArchValues = \n/*#__PURE__*/ createConstMap([\n    TMP_HOSTARCHVALUES_AMD64,\n    TMP_HOSTARCHVALUES_ARM32,\n    TMP_HOSTARCHVALUES_ARM64,\n    TMP_HOSTARCHVALUES_IA64,\n    TMP_HOSTARCHVALUES_PPC32,\n    TMP_HOSTARCHVALUES_PPC64,\n    TMP_HOSTARCHVALUES_X86,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for OsTypeValues enum definition\n *\n * The operating system type.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_OSTYPEVALUES_WINDOWS = 'windows';\nvar TMP_OSTYPEVALUES_LINUX = 'linux';\nvar TMP_OSTYPEVALUES_DARWIN = 'darwin';\nvar TMP_OSTYPEVALUES_FREEBSD = 'freebsd';\nvar TMP_OSTYPEVALUES_NETBSD = 'netbsd';\nvar TMP_OSTYPEVALUES_OPENBSD = 'openbsd';\nvar TMP_OSTYPEVALUES_DRAGONFLYBSD = 'dragonflybsd';\nvar TMP_OSTYPEVALUES_HPUX = 'hpux';\nvar TMP_OSTYPEVALUES_AIX = 'aix';\nvar TMP_OSTYPEVALUES_SOLARIS = 'solaris';\nvar TMP_OSTYPEVALUES_Z_OS = 'z_os';\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_WINDOWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_WINDOWS = TMP_OSTYPEVALUES_WINDOWS;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_LINUX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_LINUX = TMP_OSTYPEVALUES_LINUX;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_DARWIN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_DARWIN = TMP_OSTYPEVALUES_DARWIN;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_FREEBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_FREEBSD = TMP_OSTYPEVALUES_FREEBSD;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_NETBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_NETBSD = TMP_OSTYPEVALUES_NETBSD;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_OPENBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_OPENBSD = TMP_OSTYPEVALUES_OPENBSD;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_DRAGONFLYBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_DRAGONFLYBSD = TMP_OSTYPEVALUES_DRAGONFLYBSD;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_HPUX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_HPUX = TMP_OSTYPEVALUES_HPUX;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_AIX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_AIX = TMP_OSTYPEVALUES_AIX;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_SOLARIS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_SOLARIS = TMP_OSTYPEVALUES_SOLARIS;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_Z_OS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport var OSTYPEVALUES_Z_OS = TMP_OSTYPEVALUES_Z_OS;\n/**\n * The constant map of values for OsTypeValues.\n * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification.\n */\nexport var OsTypeValues = \n/*#__PURE__*/ createConstMap([\n    TMP_OSTYPEVALUES_WINDOWS,\n    TMP_OSTYPEVALUES_LINUX,\n    TMP_OSTYPEVALUES_DARWIN,\n    TMP_OSTYPEVALUES_FREEBSD,\n    TMP_OSTYPEVALUES_NETBSD,\n    TMP_OSTYPEVALUES_OPENBSD,\n    TMP_OSTYPEVALUES_DRAGONFLYBSD,\n    TMP_OSTYPEVALUES_HPUX,\n    TMP_OSTYPEVALUES_AIX,\n    TMP_OSTYPEVALUES_SOLARIS,\n    TMP_OSTYPEVALUES_Z_OS,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for TelemetrySdkLanguageValues enum definition\n *\n * The language of the telemetry SDK.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_CPP = 'cpp';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET = 'dotnet';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG = 'erlang';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_GO = 'go';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA = 'java';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS = 'nodejs';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_PHP = 'php';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON = 'python';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY = 'ruby';\nvar TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS = 'webjs';\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_CPP.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_CPP = TMP_TELEMETRYSDKLANGUAGEVALUES_CPP;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_DOTNET = TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_ERLANG = TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_GO.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_GO = TMP_TELEMETRYSDKLANGUAGEVALUES_GO;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_JAVA.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_JAVA = TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_NODEJS = TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PHP.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_PHP = TMP_TELEMETRYSDKLANGUAGEVALUES_PHP;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_PYTHON = TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_RUBY.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_RUBY = TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS.\n */\nexport var TELEMETRYSDKLANGUAGEVALUES_WEBJS = TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS;\n/**\n * The constant map of values for TelemetrySdkLanguageValues.\n * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification.\n */\nexport var TelemetrySdkLanguageValues = \n/*#__PURE__*/ createConstMap([\n    TMP_TELEMETRYSDKLANGUAGEVALUES_CPP,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_GO,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_PHP,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS,\n]);\n//# sourceMappingURL=SemanticResourceAttributes.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only one-level deep at this point,\n * and should not cause problems for tree-shakers.\n */\nexport * from './SemanticResourceAttributes';\n//# sourceMappingURL=index.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n/**\n * Rate-limiting result, shows whether the lease was acquired or contains a rejection reason\n *\n * @example acquired\n * @example request_canceled\n */\nexport var ATTR_ASPNETCORE_RATE_LIMITING_RESULT = 'aspnetcore.rate_limiting.result';\n/**\n  * Enum value \"acquired\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n  */\nexport var ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED = \"acquired\";\n/**\n  * Enum value \"endpoint_limiter\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n  */\nexport var ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER = \"endpoint_limiter\";\n/**\n  * Enum value \"global_limiter\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n  */\nexport var ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER = \"global_limiter\";\n/**\n  * Enum value \"request_canceled\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n  */\nexport var ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED = \"request_canceled\";\n/**\n * The language of the telemetry SDK.\n */\nexport var ATTR_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language';\n/**\n  * Enum value \"cpp\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_CPP = \"cpp\";\n/**\n  * Enum value \"dotnet\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET = \"dotnet\";\n/**\n  * Enum value \"erlang\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG = \"erlang\";\n/**\n  * Enum value \"go\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_GO = \"go\";\n/**\n  * Enum value \"java\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_JAVA = \"java\";\n/**\n  * Enum value \"nodejs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS = \"nodejs\";\n/**\n  * Enum value \"php\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_PHP = \"php\";\n/**\n  * Enum value \"python\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON = \"python\";\n/**\n  * Enum value \"ruby\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_RUBY = \"ruby\";\n/**\n  * Enum value \"rust\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_RUST = \"rust\";\n/**\n  * Enum value \"swift\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT = \"swift\";\n/**\n  * Enum value \"webjs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n  */\nexport var TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS = \"webjs\";\n/**\n * The name of the telemetry SDK as defined above.\n *\n * @example opentelemetry\n *\n * @note The OpenTelemetry SDK **MUST** set the `telemetry.sdk.name` attribute to `opentelemetry`.\n * If another SDK, like a fork or a vendor-provided implementation, is used, this SDK **MUST** set the\n * `telemetry.sdk.name` attribute to the fully-qualified class or module name of this SDK's main entry point\n * or another suitable identifier depending on the language.\n * The identifier `opentelemetry` is reserved and **MUST NOT** be used in this case.\n * All custom identifiers **SHOULD** be stable across different versions of an implementation.\n */\nexport var ATTR_TELEMETRY_SDK_NAME = 'telemetry.sdk.name';\n/**\n * The version string of the telemetry SDK.\n *\n * @example 1.2.3\n */\nexport var ATTR_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version';\n/**\n * Full type name of the [`IExceptionHandler`](https://learn.microsoft.com/dotnet/api/microsoft.aspnetcore.diagnostics.iexceptionhandler) implementation that handled the exception.\n *\n * @example Contoso.MyHandler\n */\nexport var ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE = 'aspnetcore.diagnostics.handler.type';\n/**\n * ASP.NET Core exception middleware handling result\n *\n * @example handled\n * @example unhandled\n */\nexport var ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT = 'aspnetcore.diagnostics.exception.result';\n/**\n  * Enum value \"aborted\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n  */\nexport var ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED = \"aborted\";\n/**\n  * Enum value \"handled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n  */\nexport var ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED = \"handled\";\n/**\n  * Enum value \"skipped\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n  */\nexport var ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED = \"skipped\";\n/**\n  * Enum value \"unhandled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n  */\nexport var ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED = \"unhandled\";\n/**\n * Rate limiting policy name.\n *\n * @example fixed\n * @example sliding\n * @example token\n */\nexport var ATTR_ASPNETCORE_RATE_LIMITING_POLICY = 'aspnetcore.rate_limiting.policy';\n/**\n * Flag indicating if request was handled by the application pipeline.\n *\n * @example true\n */\nexport var ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED = 'aspnetcore.request.is_unhandled';\n/**\n * A value that indicates whether the matched route is a fallback route.\n *\n * @example true\n */\nexport var ATTR_ASPNETCORE_ROUTING_IS_FALLBACK = 'aspnetcore.routing.is_fallback';\n/**\n * Match result - success or failure\n *\n * @example success\n * @example failure\n */\nexport var ATTR_ASPNETCORE_ROUTING_MATCH_STATUS = 'aspnetcore.routing.match_status';\n/**\n  * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n  */\nexport var ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE = \"failure\";\n/**\n  * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n  */\nexport var ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS = \"success\";\n/**\n * Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example client.example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the server side, and when communicating through an intermediary, `client.address` **SHOULD** represent the client address behind any intermediaries,  for example proxies, if it's available.\n */\nexport var ATTR_CLIENT_ADDRESS = 'client.address';\n/**\n * Client port number.\n *\n * @example 65123\n *\n * @note When observed from the server side, and when communicating through an intermediary, `client.port` **SHOULD** represent the client port behind any intermediaries,  for example proxies, if it's available.\n */\nexport var ATTR_CLIENT_PORT = 'client.port';\n/**\n * Describes a class of error the operation ended with.\n *\n * @example timeout\n * @example java.net.UnknownHostException\n * @example server_certificate_invalid\n * @example 500\n *\n * @note The `error.type` **SHOULD** be predictable, and **SHOULD** have low cardinality.\n *\n * When `error.type` is set to a type (e.g., an exception type), its\n * canonical class name identifying the type within the artifact **SHOULD** be used.\n *\n * Instrumentations **SHOULD** document the list of errors they report.\n *\n * The cardinality of `error.type` within one instrumentation library **SHOULD** be low.\n * Telemetry consumers that aggregate data from multiple instrumentation libraries and applications\n * should be prepared for `error.type` to have high cardinality at query time when no\n * additional filters are applied.\n *\n * If the operation has completed successfully, instrumentations **SHOULD NOT** set `error.type`.\n *\n * If a specific domain defines its own set of error identifiers (such as HTTP or gRPC status codes),\n * it's **RECOMMENDED** to:\n *\n *   - Use a domain-specific attribute\n *   - Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not.\n */\nexport var ATTR_ERROR_TYPE = 'error.type';\n/**\n  * Enum value \"_OTHER\" for attribute {@link ATTR_ERROR_TYPE}.\n  */\nexport var ERROR_TYPE_VALUE_OTHER = \"_OTHER\";\n/**\n * **SHOULD** be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.\n *\n * @note An exception is considered to have escaped (or left) the scope of a span,\n * if that span is ended while the exception is still logically \"in flight\".\n * This may be actually \"in flight\" in some languages (e.g. if the exception\n * is passed to a Context manager's `__exit__` method in Python) but will\n * usually be caught at the point of recording the exception in most languages.\n *\n * It is usually not possible to determine at the point where an exception is thrown\n * whether it will escape the scope of a span.\n * However, it is trivial to know that an exception\n * will escape, if one checks for an active exception just before ending the span,\n * as done in the [example for recording span exceptions](https://opentelemetry.io/docs/specs/semconv/exceptions/exceptions-spans/#recording-an-exception).\n *\n * It follows that an exception may still escape the scope of the span\n * even if the `exception.escaped` attribute was not set or set to false,\n * since the event might have been recorded at a time where it was not\n * clear whether the exception will escape.\n */\nexport var ATTR_EXCEPTION_ESCAPED = 'exception.escaped';\n/**\n * The exception message.\n *\n * @example Division by zero\n * @example Can't convert 'int' object to str implicitly\n */\nexport var ATTR_EXCEPTION_MESSAGE = 'exception.message';\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n *\n * @example \"Exception in thread \"main\" java.lang.RuntimeException: Test exception\\\\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\\\\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\\\\n at com.example.GenerateTrace.main(GenerateTrace.java:5)\\\\n\"\n */\nexport var ATTR_EXCEPTION_STACKTRACE = 'exception.stacktrace';\n/**\n * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n *\n * @example java.net.ConnectException\n * @example OSError\n */\nexport var ATTR_EXCEPTION_TYPE = 'exception.type';\n/**\n * HTTP request headers, `<key>` being the normalized HTTP Header name (lowercase), the value being the header values.\n *\n * @example http.request.header.content-type=[\"application/json\"]\n * @example http.request.header.x-forwarded-for=[\"1.2.3.4\", \"1.2.3.5\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured. Including all request headers can be a security risk - explicit configuration helps avoid leaking sensitive information.\n * The `User-Agent` header is already captured in the `user_agent.original` attribute. Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended.\n * The attribute value **MUST** consist of either multiple header values as an array of strings or a single-item array containing a possibly comma-concatenated string, depending on the way the HTTP library provides access to headers.\n */\nexport var ATTR_HTTP_REQUEST_HEADER = function (key) { return \"http.request.header.\" + key; };\n/**\n * HTTP request method.\n *\n * @example GET\n * @example POST\n * @example HEAD\n *\n * @note HTTP request method value **SHOULD** be \"known\" to the instrumentation.\n * By default, this convention defines \"known\" methods as the ones listed in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods)\n * and the PATCH method defined in [RFC5789](https://www.rfc-editor.org/rfc/rfc5789.html).\n *\n * If the HTTP request method is not known to instrumentation, it **MUST** set the `http.request.method` attribute to `_OTHER`.\n *\n * If the HTTP instrumentation could end up converting valid HTTP request methods to `_OTHER`, then it **MUST** provide a way to override\n * the list of known HTTP methods. If this override is done via environment variable, then the environment variable **MUST** be named\n * OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated list of case-sensitive known HTTP methods\n * (this list **MUST** be a full override of the default known method, it is not a list of known methods in addition to the defaults).\n *\n * HTTP method names are case-sensitive and `http.request.method` attribute value **MUST** match a known HTTP method name exactly.\n * Instrumentations for specific web frameworks that consider HTTP methods to be case insensitive, **SHOULD** populate a canonical equivalent.\n * Tracing instrumentations that do so, **MUST** also set `http.request.method_original` to the original value.\n */\nexport var ATTR_HTTP_REQUEST_METHOD = 'http.request.method';\n/**\n  * Enum value \"_OTHER\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_OTHER = \"_OTHER\";\n/**\n  * Enum value \"CONNECT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_CONNECT = \"CONNECT\";\n/**\n  * Enum value \"DELETE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_DELETE = \"DELETE\";\n/**\n  * Enum value \"GET\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_GET = \"GET\";\n/**\n  * Enum value \"HEAD\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_HEAD = \"HEAD\";\n/**\n  * Enum value \"OPTIONS\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_OPTIONS = \"OPTIONS\";\n/**\n  * Enum value \"PATCH\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_PATCH = \"PATCH\";\n/**\n  * Enum value \"POST\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_POST = \"POST\";\n/**\n  * Enum value \"PUT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_PUT = \"PUT\";\n/**\n  * Enum value \"TRACE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n  */\nexport var HTTP_REQUEST_METHOD_VALUE_TRACE = \"TRACE\";\n/**\n * Original HTTP method sent by the client in the request line.\n *\n * @example GeT\n * @example ACL\n * @example foo\n */\nexport var ATTR_HTTP_REQUEST_METHOD_ORIGINAL = 'http.request.method_original';\n/**\n * The ordinal number of request resending attempt (for any reason, including redirects).\n *\n * @example 3\n *\n * @note The resend count **SHOULD** be updated each time an HTTP request gets resent by the client, regardless of what was the cause of the resending (e.g. redirection, authorization failure, 503 Server Unavailable, network issues, or any other).\n */\nexport var ATTR_HTTP_REQUEST_RESEND_COUNT = 'http.request.resend_count';\n/**\n * HTTP response headers, `<key>` being the normalized HTTP Header name (lowercase), the value being the header values.\n *\n * @example http.response.header.content-type=[\"application/json\"]\n * @example http.response.header.my-custom-header=[\"abc\", \"def\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured. Including all response headers can be a security risk - explicit configuration helps avoid leaking sensitive information.\n * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended.\n * The attribute value **MUST** consist of either multiple header values as an array of strings or a single-item array containing a possibly comma-concatenated string, depending on the way the HTTP library provides access to headers.\n */\nexport var ATTR_HTTP_RESPONSE_HEADER = function (key) { return \"http.response.header.\" + key; };\n/**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n *\n * @example 200\n */\nexport var ATTR_HTTP_RESPONSE_STATUS_CODE = 'http.response.status_code';\n/**\n * The matched route, that is, the path template in the format used by the respective server framework.\n *\n * @example /users/:userID?\n * @example {controller}/{action}/{id?}\n *\n * @note **MUST NOT** be populated when this is not supported by the HTTP server framework as the route attribute should have low-cardinality and the URI path can NOT substitute it.\n * **SHOULD** include the [application root](/docs/http/http-spans.md#http-server-definitions) if there is one.\n */\nexport var ATTR_HTTP_ROUTE = 'http.route';\n/**\n * Name of the garbage collector action.\n *\n * @example end of minor GC\n * @example end of major GC\n *\n * @note Garbage collector action is generally obtained via [GarbageCollectionNotificationInfo#getGcAction()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcAction()).\n */\nexport var ATTR_JVM_GC_ACTION = 'jvm.gc.action';\n/**\n * Name of the garbage collector.\n *\n * @example G1 Young Generation\n * @example G1 Old Generation\n *\n * @note Garbage collector name is generally obtained via [GarbageCollectionNotificationInfo#getGcName()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcName()).\n */\nexport var ATTR_JVM_GC_NAME = 'jvm.gc.name';\n/**\n * Name of the memory pool.\n *\n * @example G1 Old Gen\n * @example G1 Eden space\n * @example G1 Survivor Space\n *\n * @note Pool names are generally obtained via [MemoryPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getName()).\n */\nexport var ATTR_JVM_MEMORY_POOL_NAME = 'jvm.memory.pool.name';\n/**\n * The type of memory.\n *\n * @example heap\n * @example non_heap\n */\nexport var ATTR_JVM_MEMORY_TYPE = 'jvm.memory.type';\n/**\n  * Enum value \"heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n  */\nexport var JVM_MEMORY_TYPE_VALUE_HEAP = \"heap\";\n/**\n  * Enum value \"non_heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n  */\nexport var JVM_MEMORY_TYPE_VALUE_NON_HEAP = \"non_heap\";\n/**\n * Whether the thread is daemon or not.\n */\nexport var ATTR_JVM_THREAD_DAEMON = 'jvm.thread.daemon';\n/**\n * State of the thread.\n *\n * @example runnable\n * @example blocked\n */\nexport var ATTR_JVM_THREAD_STATE = 'jvm.thread.state';\n/**\n  * Enum value \"blocked\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n  */\nexport var JVM_THREAD_STATE_VALUE_BLOCKED = \"blocked\";\n/**\n  * Enum value \"new\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n  */\nexport var JVM_THREAD_STATE_VALUE_NEW = \"new\";\n/**\n  * Enum value \"runnable\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n  */\nexport var JVM_THREAD_STATE_VALUE_RUNNABLE = \"runnable\";\n/**\n  * Enum value \"terminated\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n  */\nexport var JVM_THREAD_STATE_VALUE_TERMINATED = \"terminated\";\n/**\n  * Enum value \"timed_waiting\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n  */\nexport var JVM_THREAD_STATE_VALUE_TIMED_WAITING = \"timed_waiting\";\n/**\n  * Enum value \"waiting\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n  */\nexport var JVM_THREAD_STATE_VALUE_WAITING = \"waiting\";\n/**\n * Local address of the network connection - IP address or Unix domain socket name.\n *\n * @example 10.1.2.80\n * @example /tmp/my.sock\n */\nexport var ATTR_NETWORK_LOCAL_ADDRESS = 'network.local.address';\n/**\n * Local port number of the network connection.\n *\n * @example 65123\n */\nexport var ATTR_NETWORK_LOCAL_PORT = 'network.local.port';\n/**\n * Peer address of the network connection - IP address or Unix domain socket name.\n *\n * @example 10.1.2.80\n * @example /tmp/my.sock\n */\nexport var ATTR_NETWORK_PEER_ADDRESS = 'network.peer.address';\n/**\n * Peer port number of the network connection.\n *\n * @example 65123\n */\nexport var ATTR_NETWORK_PEER_PORT = 'network.peer.port';\n/**\n * [OSI application layer](https://osi-model.com/application-layer/) or non-OSI equivalent.\n *\n * @example amqp\n * @example http\n * @example mqtt\n *\n * @note The value **SHOULD** be normalized to lowercase.\n */\nexport var ATTR_NETWORK_PROTOCOL_NAME = 'network.protocol.name';\n/**\n * The actual version of the protocol used for network communication.\n *\n * @example 1.1\n * @example 2\n *\n * @note If protocol version is subject to negotiation (for example using [ALPN](https://www.rfc-editor.org/rfc/rfc7301.html)), this attribute **SHOULD** be set to the negotiated version. If the actual protocol version is not known, this attribute **SHOULD NOT** be set.\n */\nexport var ATTR_NETWORK_PROTOCOL_VERSION = 'network.protocol.version';\n/**\n * [OSI transport layer](https://osi-model.com/transport-layer/) or [inter-process communication method](https://wikipedia.org/wiki/Inter-process_communication).\n *\n * @example tcp\n * @example udp\n *\n * @note The value **SHOULD** be normalized to lowercase.\n *\n * Consider always setting the transport when setting a port number, since\n * a port number is ambiguous without knowing the transport. For example\n * different processes could be listening on TCP port 12345 and UDP port 12345.\n */\nexport var ATTR_NETWORK_TRANSPORT = 'network.transport';\n/**\n  * Enum value \"pipe\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n  */\nexport var NETWORK_TRANSPORT_VALUE_PIPE = \"pipe\";\n/**\n  * Enum value \"quic\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n  */\nexport var NETWORK_TRANSPORT_VALUE_QUIC = \"quic\";\n/**\n  * Enum value \"tcp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n  */\nexport var NETWORK_TRANSPORT_VALUE_TCP = \"tcp\";\n/**\n  * Enum value \"udp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n  */\nexport var NETWORK_TRANSPORT_VALUE_UDP = \"udp\";\n/**\n  * Enum value \"unix\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n  */\nexport var NETWORK_TRANSPORT_VALUE_UNIX = \"unix\";\n/**\n * [OSI network layer](https://osi-model.com/network-layer/) or non-OSI equivalent.\n *\n * @example ipv4\n * @example ipv6\n *\n * @note The value **SHOULD** be normalized to lowercase.\n */\nexport var ATTR_NETWORK_TYPE = 'network.type';\n/**\n  * Enum value \"ipv4\" for attribute {@link ATTR_NETWORK_TYPE}.\n  */\nexport var NETWORK_TYPE_VALUE_IPV4 = \"ipv4\";\n/**\n  * Enum value \"ipv6\" for attribute {@link ATTR_NETWORK_TYPE}.\n  */\nexport var NETWORK_TYPE_VALUE_IPV6 = \"ipv6\";\n/**\n * The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP).\n *\n * @example io.opentelemetry.contrib.mongodb\n */\nexport var ATTR_OTEL_SCOPE_NAME = 'otel.scope.name';\n/**\n * The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP).\n *\n * @example 1.0.0\n */\nexport var ATTR_OTEL_SCOPE_VERSION = 'otel.scope.version';\n/**\n * Name of the code, either \"OK\" or \"ERROR\". **MUST NOT** be set if the status code is UNSET.\n */\nexport var ATTR_OTEL_STATUS_CODE = 'otel.status_code';\n/**\n  * Enum value \"ERROR\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n  */\nexport var OTEL_STATUS_CODE_VALUE_ERROR = \"ERROR\";\n/**\n  * Enum value \"OK\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n  */\nexport var OTEL_STATUS_CODE_VALUE_OK = \"OK\";\n/**\n * Description of the Status if it has a value, otherwise not set.\n *\n * @example resource not found\n */\nexport var ATTR_OTEL_STATUS_DESCRIPTION = 'otel.status_description';\n/**\n * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the client side, and when communicating through an intermediary, `server.address` **SHOULD** represent the server address behind any intermediaries, for example proxies, if it's available.\n */\nexport var ATTR_SERVER_ADDRESS = 'server.address';\n/**\n * Server port number.\n *\n * @example 80\n * @example 8080\n * @example 443\n *\n * @note When observed from the client side, and when communicating through an intermediary, `server.port` **SHOULD** represent the server port behind any intermediaries, for example proxies, if it's available.\n */\nexport var ATTR_SERVER_PORT = 'server.port';\n/**\n * Logical name of the service.\n *\n * @example shoppingcart\n *\n * @note **MUST** be the same for all instances of horizontally scaled services. If the value was not specified, SDKs **MUST** fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value **MUST** be set to `unknown_service`.\n */\nexport var ATTR_SERVICE_NAME = 'service.name';\n/**\n * The version string of the service API or implementation. The format is not defined by these conventions.\n *\n * @example 2.0.0\n * @example a01dbef8a\n */\nexport var ATTR_SERVICE_VERSION = 'service.version';\n/**\n * SignalR HTTP connection closure status.\n *\n * @example app_shutdown\n * @example timeout\n */\nexport var ATTR_SIGNALR_CONNECTION_STATUS = 'signalr.connection.status';\n/**\n  * Enum value \"app_shutdown\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n  */\nexport var SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN = \"app_shutdown\";\n/**\n  * Enum value \"normal_closure\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n  */\nexport var SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE = \"normal_closure\";\n/**\n  * Enum value \"timeout\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n  */\nexport var SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT = \"timeout\";\n/**\n * [SignalR transport type](https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/TransportProtocols.md)\n *\n * @example web_sockets\n * @example long_polling\n */\nexport var ATTR_SIGNALR_TRANSPORT = 'signalr.transport';\n/**\n  * Enum value \"long_polling\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n  */\nexport var SIGNALR_TRANSPORT_VALUE_LONG_POLLING = \"long_polling\";\n/**\n  * Enum value \"server_sent_events\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n  */\nexport var SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS = \"server_sent_events\";\n/**\n  * Enum value \"web_sockets\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n  */\nexport var SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS = \"web_sockets\";\n/**\n * The [URI fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component\n *\n * @example SemConv\n */\nexport var ATTR_URL_FRAGMENT = 'url.fragment';\n/**\n * Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986)\n *\n * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv\n * @example //localhost\n *\n * @note For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment is not transmitted over HTTP, but if it is known, it **SHOULD** be included nevertheless.\n * `url.full` **MUST NOT** contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case username and password **SHOULD** be redacted and attribute's value **SHOULD** be `https://REDACTED:REDACTED@www.example.com/`.\n * `url.full` **SHOULD** capture the absolute URL when it is available (or can be reconstructed). Sensitive content provided in `url.full` **SHOULD** be scrubbed when instrumentations can identify it.\n */\nexport var ATTR_URL_FULL = 'url.full';\n/**\n * The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component\n *\n * @example /search\n *\n * @note Sensitive content provided in `url.path` **SHOULD** be scrubbed when instrumentations can identify it.\n */\nexport var ATTR_URL_PATH = 'url.path';\n/**\n * The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component\n *\n * @example q=OpenTelemetry\n *\n * @note Sensitive content provided in `url.query` **SHOULD** be scrubbed when instrumentations can identify it.\n */\nexport var ATTR_URL_QUERY = 'url.query';\n/**\n * The [URI scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component identifying the used protocol.\n *\n * @example https\n * @example ftp\n * @example telnet\n */\nexport var ATTR_URL_SCHEME = 'url.scheme';\n/**\n * Value of the [HTTP User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) header sent by the client.\n *\n * @example CERN-LineMode/2.15 libwww/2.17b3\n * @example Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1\n * @example YourApp/1.0.0 grpc-java-okhttp/1.27.2\n */\nexport var ATTR_USER_AGENT_ORIGINAL = 'user_agent.original';\n//# sourceMappingURL=stable_attributes.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/register/stable/metrics.ts.j2\n//----------------------------------------------------------------------------------------------------------\n/**\n * Number of exceptions caught by exception handling middleware.\n *\n * @note Meter name: `Microsoft.AspNetCore.Diagnostics`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS = 'aspnetcore.diagnostics.exceptions';\n/**\n * Number of requests that are currently active on the server that hold a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES = 'aspnetcore.rate_limiting.active_request_leases';\n/**\n * Number of requests that are currently queued, waiting to acquire a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS = 'aspnetcore.rate_limiting.queued_requests';\n/**\n * The time the request spent in a queue waiting to acquire a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE = 'aspnetcore.rate_limiting.request.time_in_queue';\n/**\n * The duration of rate limiting lease held by requests on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION = 'aspnetcore.rate_limiting.request_lease.duration';\n/**\n * Number of requests that tried to acquire a rate limiting lease.\n *\n * @note Requests could be:\n *\n *   - Rejected by global or endpoint rate limiting policies\n *   - Canceled while waiting for the lease.\n *\n * Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS = 'aspnetcore.rate_limiting.requests';\n/**\n * Number of requests that were attempted to be matched to an endpoint.\n *\n * @note Meter name: `Microsoft.AspNetCore.Routing`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS = 'aspnetcore.routing.match_attempts';\n/**\n * Duration of HTTP client requests.\n */\nexport var METRIC_HTTP_CLIENT_REQUEST_DURATION = 'http.client.request.duration';\n/**\n * Duration of HTTP server requests.\n */\nexport var METRIC_HTTP_SERVER_REQUEST_DURATION = 'http.server.request.duration';\n/**\n * Number of classes currently loaded.\n */\nexport var METRIC_JVM_CLASS_COUNT = 'jvm.class.count';\n/**\n * Number of classes loaded since JVM start.\n */\nexport var METRIC_JVM_CLASS_LOADED = 'jvm.class.loaded';\n/**\n * Number of classes unloaded since JVM start.\n */\nexport var METRIC_JVM_CLASS_UNLOADED = 'jvm.class.unloaded';\n/**\n * Number of processors available to the Java virtual machine.\n */\nexport var METRIC_JVM_CPU_COUNT = 'jvm.cpu.count';\n/**\n * Recent CPU utilization for the process as reported by the JVM.\n *\n * @note The value range is [0.0,1.0]. This utilization is not defined as being for the specific interval since last measurement (unlike `system.cpu.utilization`). [Reference](https://docs.oracle.com/en/java/javase/17/docs/api/jdk.management/com/sun/management/OperatingSystemMXBean.html#getProcessCpuLoad()).\n */\nexport var METRIC_JVM_CPU_RECENT_UTILIZATION = 'jvm.cpu.recent_utilization';\n/**\n * CPU time used by the process as reported by the JVM.\n */\nexport var METRIC_JVM_CPU_TIME = 'jvm.cpu.time';\n/**\n * Duration of JVM garbage collection actions.\n */\nexport var METRIC_JVM_GC_DURATION = 'jvm.gc.duration';\n/**\n * Measure of memory committed.\n */\nexport var METRIC_JVM_MEMORY_COMMITTED = 'jvm.memory.committed';\n/**\n * Measure of max obtainable memory.\n */\nexport var METRIC_JVM_MEMORY_LIMIT = 'jvm.memory.limit';\n/**\n * Measure of memory used.\n */\nexport var METRIC_JVM_MEMORY_USED = 'jvm.memory.used';\n/**\n * Measure of memory used, as measured after the most recent garbage collection event on this pool.\n */\nexport var METRIC_JVM_MEMORY_USED_AFTER_LAST_GC = 'jvm.memory.used_after_last_gc';\n/**\n * Number of executing platform threads.\n */\nexport var METRIC_JVM_THREAD_COUNT = 'jvm.thread.count';\n/**\n * Number of connections that are currently active on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_ACTIVE_CONNECTIONS = 'kestrel.active_connections';\n/**\n * Number of TLS handshakes that are currently in progress on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES = 'kestrel.active_tls_handshakes';\n/**\n * The duration of connections on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_CONNECTION_DURATION = 'kestrel.connection.duration';\n/**\n * Number of connections that are currently queued and are waiting to start.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_QUEUED_CONNECTIONS = 'kestrel.queued_connections';\n/**\n * Number of HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are currently queued and are waiting to start.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_QUEUED_REQUESTS = 'kestrel.queued_requests';\n/**\n * Number of connections rejected by the server.\n *\n * @note Connections are rejected when the currently active count exceeds the value configured with `MaxConcurrentConnections`.\n * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_REJECTED_CONNECTIONS = 'kestrel.rejected_connections';\n/**\n * The duration of TLS handshakes on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_TLS_HANDSHAKE_DURATION = 'kestrel.tls_handshake.duration';\n/**\n * Number of connections that are currently upgraded (WebSockets). .\n *\n * @note The counter only tracks HTTP/1.1 connections.\n *\n * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_KESTREL_UPGRADED_CONNECTIONS = 'kestrel.upgraded_connections';\n/**\n * Number of connections that are currently active on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS = 'signalr.server.active_connections';\n/**\n * The duration of connections on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0\n */\nexport var METRIC_SIGNALR_SERVER_CONNECTION_DURATION = 'signalr.server.connection.duration';\n//# sourceMappingURL=stable_metrics.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only two-levels deep, and\n * should not cause problems for tree-shakers.\n */\n// Deprecated. These are kept around for compatibility purposes\nexport * from './trace';\nexport * from './resource';\n// Use these instead\nexport * from './stable_attributes';\nexport * from './stable_metrics';\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultServiceName = void 0;\nfunction defaultServiceName() {\n    return `unknown_service:${process.argv0}`;\n}\nexports.defaultServiceName = defaultServiceName;\n//# sourceMappingURL=default-service-name.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultServiceName = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar default_service_name_1 = require(\"./default-service-name\");\nObject.defineProperty(exports, \"defaultServiceName\", { enumerable: true, get: function () { return default_service_name_1.defaultServiceName; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultServiceName = void 0;\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"defaultServiceName\", { enumerable: true, get: function () { return node_1.defaultServiceName; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Resource = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst platform_1 = require(\"./platform\");\n/**\n * A Resource describes the entity for which a signals (metrics or trace) are\n * collected.\n */\nclass Resource {\n    constructor(\n    /**\n     * A dictionary of attributes with string keys and values that provide\n     * information about the entity as numbers, strings or booleans\n     * TODO: Consider to add check/validation on attributes.\n     */\n    attributes, asyncAttributesPromise) {\n        var _a;\n        this._attributes = attributes;\n        this.asyncAttributesPending = asyncAttributesPromise != null;\n        this._syncAttributes = (_a = this._attributes) !== null && _a !== void 0 ? _a : {};\n        this._asyncAttributesPromise = asyncAttributesPromise === null || asyncAttributesPromise === void 0 ? void 0 : asyncAttributesPromise.then(asyncAttributes => {\n            this._attributes = Object.assign({}, this._attributes, asyncAttributes);\n            this.asyncAttributesPending = false;\n            return asyncAttributes;\n        }, err => {\n            api_1.diag.debug(\"a resource's async attributes promise rejected: %s\", err);\n            this.asyncAttributesPending = false;\n            return {};\n        });\n    }\n    /**\n     * Returns an empty Resource\n     */\n    static empty() {\n        return Resource.EMPTY;\n    }\n    /**\n     * Returns a Resource that identifies the SDK in use.\n     */\n    static default() {\n        return new Resource({\n            [semantic_conventions_1.SEMRESATTRS_SERVICE_NAME]: (0, platform_1.defaultServiceName)(),\n            [semantic_conventions_1.SEMRESATTRS_TELEMETRY_SDK_LANGUAGE]: core_1.SDK_INFO[semantic_conventions_1.SEMRESATTRS_TELEMETRY_SDK_LANGUAGE],\n            [semantic_conventions_1.SEMRESATTRS_TELEMETRY_SDK_NAME]: core_1.SDK_INFO[semantic_conventions_1.SEMRESATTRS_TELEMETRY_SDK_NAME],\n            [semantic_conventions_1.SEMRESATTRS_TELEMETRY_SDK_VERSION]: core_1.SDK_INFO[semantic_conventions_1.SEMRESATTRS_TELEMETRY_SDK_VERSION],\n        });\n    }\n    get attributes() {\n        var _a;\n        if (this.asyncAttributesPending) {\n            api_1.diag.error('Accessing resource attributes before async attributes settled');\n        }\n        return (_a = this._attributes) !== null && _a !== void 0 ? _a : {};\n    }\n    /**\n     * Returns a promise that will never be rejected. Resolves when all async attributes have finished being added to\n     * this Resource's attributes. This is useful in exporters to block until resource detection\n     * has finished.\n     */\n    async waitForAsyncAttributes() {\n        if (this.asyncAttributesPending) {\n            await this._asyncAttributesPromise;\n        }\n    }\n    /**\n     * Returns a new, merged {@link Resource} by merging the current Resource\n     * with the other Resource. In case of a collision, other Resource takes\n     * precedence.\n     *\n     * @param other the Resource that will be merged with this.\n     * @returns the newly merged Resource.\n     */\n    merge(other) {\n        var _a;\n        if (!other)\n            return this;\n        // SpanAttributes from other resource overwrite attributes from this resource.\n        const mergedSyncAttributes = Object.assign(Object.assign({}, this._syncAttributes), ((_a = other._syncAttributes) !== null && _a !== void 0 ? _a : other.attributes));\n        if (!this._asyncAttributesPromise &&\n            !other._asyncAttributesPromise) {\n            return new Resource(mergedSyncAttributes);\n        }\n        const mergedAttributesPromise = Promise.all([\n            this._asyncAttributesPromise,\n            other._asyncAttributesPromise,\n        ]).then(([thisAsyncAttributes, otherAsyncAttributes]) => {\n            var _a;\n            return Object.assign(Object.assign(Object.assign(Object.assign({}, this._syncAttributes), thisAsyncAttributes), ((_a = other._syncAttributes) !== null && _a !== void 0 ? _a : other.attributes)), otherAsyncAttributes);\n        });\n        return new Resource(mergedSyncAttributes, mergedAttributesPromise);\n    }\n}\nexports.Resource = Resource;\nResource.EMPTY = new Resource({});\n//# sourceMappingURL=Resource.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalizeType = exports.normalizeArch = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst normalizeArch = (nodeArchString) => {\n    // Maps from https://nodejs.org/api/os.html#osarch to arch values in spec:\n    // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/host.md\n    switch (nodeArchString) {\n        case 'arm':\n            return 'arm32';\n        case 'ppc':\n            return 'ppc32';\n        case 'x64':\n            return 'amd64';\n        default:\n            return nodeArchString;\n    }\n};\nexports.normalizeArch = normalizeArch;\nconst normalizeType = (nodePlatform) => {\n    // Maps from https://nodejs.org/api/os.html#osplatform to arch values in spec:\n    // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/os.md\n    switch (nodePlatform) {\n        case 'sunos':\n            return 'solaris';\n        case 'win32':\n            return 'windows';\n        default:\n            return nodePlatform;\n    }\n};\nexports.normalizeType = normalizeType;\n//# sourceMappingURL=utils.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.execAsync = void 0;\nconst child_process = require(\"child_process\");\nconst util = require(\"util\");\nexports.execAsync = util.promisify(child_process.exec);\n//# sourceMappingURL=execAsync.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\nconst execAsync_1 = require(\"./execAsync\");\nconst api_1 = require(\"@opentelemetry/api\");\nasync function getMachineId() {\n    try {\n        const result = await (0, execAsync_1.execAsync)('ioreg -rd1 -c \"IOPlatformExpertDevice\"');\n        const idLine = result.stdout\n            .split('\\n')\n            .find(line => line.includes('IOPlatformUUID'));\n        if (!idLine) {\n            return '';\n        }\n        const parts = idLine.split('\" = \"');\n        if (parts.length === 2) {\n            return parts[1].slice(0, -1);\n        }\n    }\n    catch (e) {\n        api_1.diag.debug(`error reading machine id: ${e}`);\n    }\n    return '';\n}\nexports.getMachineId = getMachineId;\n//# sourceMappingURL=getMachineId-darwin.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst fs_1 = require(\"fs\");\nconst api_1 = require(\"@opentelemetry/api\");\nasync function getMachineId() {\n    const paths = ['/etc/machine-id', '/var/lib/dbus/machine-id'];\n    for (const path of paths) {\n        try {\n            const result = await fs_1.promises.readFile(path, { encoding: 'utf8' });\n            return result.trim();\n        }\n        catch (e) {\n            api_1.diag.debug(`error reading machine id: ${e}`);\n        }\n    }\n    return '';\n}\nexports.getMachineId = getMachineId;\n//# sourceMappingURL=getMachineId-linux.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\nconst fs_1 = require(\"fs\");\nconst execAsync_1 = require(\"./execAsync\");\nconst api_1 = require(\"@opentelemetry/api\");\nasync function getMachineId() {\n    try {\n        const result = await fs_1.promises.readFile('/etc/hostid', { encoding: 'utf8' });\n        return result.trim();\n    }\n    catch (e) {\n        api_1.diag.debug(`error reading machine id: ${e}`);\n    }\n    try {\n        const result = await (0, execAsync_1.execAsync)('kenv -q smbios.system.uuid');\n        return result.stdout.trim();\n    }\n    catch (e) {\n        api_1.diag.debug(`error reading machine id: ${e}`);\n    }\n    return '';\n}\nexports.getMachineId = getMachineId;\n//# sourceMappingURL=getMachineId-bsd.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\nconst process = require(\"process\");\nconst execAsync_1 = require(\"./execAsync\");\nconst api_1 = require(\"@opentelemetry/api\");\nasync function getMachineId() {\n    const args = 'QUERY HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Cryptography /v MachineGuid';\n    let command = '%windir%\\\\System32\\\\REG.exe';\n    if (process.arch === 'ia32' && 'PROCESSOR_ARCHITEW6432' in process.env) {\n        command = '%windir%\\\\sysnative\\\\cmd.exe /c ' + command;\n    }\n    try {\n        const result = await (0, execAsync_1.execAsync)(`${command} ${args}`);\n        const parts = result.stdout.split('REG_SZ');\n        if (parts.length === 2) {\n            return parts[1].trim();\n        }\n    }\n    catch (e) {\n        api_1.diag.debug(`error reading machine id: ${e}`);\n    }\n    return '';\n}\nexports.getMachineId = getMachineId;\n//# sourceMappingURL=getMachineId-win.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nasync function getMachineId() {\n    api_1.diag.debug('could not read machine-id: unsupported platform');\n    return '';\n}\nexports.getMachineId = getMachineId;\n//# sourceMappingURL=getMachineId-unsupported.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst process = require(\"process\");\nlet getMachineId;\nexports.getMachineId = getMachineId;\nswitch (process.platform) {\n    case 'darwin':\n        (exports.getMachineId = getMachineId = require('./getMachineId-darwin').getMachineId);\n        break;\n    case 'linux':\n        (exports.getMachineId = getMachineId = require('./getMachineId-linux').getMachineId);\n        break;\n    case 'freebsd':\n        (exports.getMachineId = getMachineId = require('./getMachineId-bsd').getMachineId);\n        break;\n    case 'win32':\n        (exports.getMachineId = getMachineId = require('./getMachineId-win').getMachineId);\n        break;\n    default:\n        (exports.getMachineId = getMachineId = require('./getMachineId-unsupported').getMachineId);\n}\n//# sourceMappingURL=getMachineId.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hostDetectorSync = void 0;\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst Resource_1 = require(\"../../../Resource\");\nconst os_1 = require(\"os\");\nconst utils_1 = require(\"./utils\");\nconst getMachineId_1 = require(\"./machine-id/getMachineId\");\n/**\n * HostDetectorSync detects the resources related to the host current process is\n * running on. Currently only non-cloud-based attributes are included.\n */\nclass HostDetectorSync {\n    detect(_config) {\n        const attributes = {\n            [semantic_conventions_1.SEMRESATTRS_HOST_NAME]: (0, os_1.hostname)(),\n            [semantic_conventions_1.SEMRESATTRS_HOST_ARCH]: (0, utils_1.normalizeArch)((0, os_1.arch)()),\n        };\n        return new Resource_1.Resource(attributes, this._getAsyncAttributes());\n    }\n    _getAsyncAttributes() {\n        return (0, getMachineId_1.getMachineId)().then(machineId => {\n            const attributes = {};\n            if (machineId) {\n                attributes[semantic_conventions_1.SEMRESATTRS_HOST_ID] = machineId;\n            }\n            return attributes;\n        });\n    }\n}\nexports.hostDetectorSync = new HostDetectorSync();\n//# sourceMappingURL=HostDetectorSync.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hostDetector = void 0;\nconst HostDetectorSync_1 = require(\"./HostDetectorSync\");\n/**\n * HostDetector detects the resources related to the host current process is\n * running on. Currently only non-cloud-based attributes are included.\n */\nclass HostDetector {\n    detect(_config) {\n        return Promise.resolve(HostDetectorSync_1.hostDetectorSync.detect(_config));\n    }\n}\nexports.hostDetector = new HostDetector();\n//# sourceMappingURL=HostDetector.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.osDetectorSync = void 0;\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst Resource_1 = require(\"../../../Resource\");\nconst os_1 = require(\"os\");\nconst utils_1 = require(\"./utils\");\n/**\n * OSDetectorSync detects the resources related to the operating system (OS) on\n * which the process represented by this resource is running.\n */\nclass OSDetectorSync {\n    detect(_config) {\n        const attributes = {\n            [semantic_conventions_1.SEMRESATTRS_OS_TYPE]: (0, utils_1.normalizeType)((0, os_1.platform)()),\n            [semantic_conventions_1.SEMRESATTRS_OS_VERSION]: (0, os_1.release)(),\n        };\n        return new Resource_1.Resource(attributes);\n    }\n}\nexports.osDetectorSync = new OSDetectorSync();\n//# sourceMappingURL=OSDetectorSync.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.osDetector = void 0;\nconst OSDetectorSync_1 = require(\"./OSDetectorSync\");\n/**\n * OSDetector detects the resources related to the operating system (OS) on\n * which the process represented by this resource is running.\n */\nclass OSDetector {\n    detect(_config) {\n        return Promise.resolve(OSDetectorSync_1.osDetectorSync.detect(_config));\n    }\n}\nexports.osDetector = new OSDetector();\n//# sourceMappingURL=OSDetector.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.processDetectorSync = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst Resource_1 = require(\"../../../Resource\");\nconst os = require(\"os\");\n/**\n * ProcessDetectorSync will be used to detect the resources related current process running\n * and being instrumented from the NodeJS Process module.\n */\nclass ProcessDetectorSync {\n    detect(_config) {\n        const attributes = {\n            [semantic_conventions_1.SEMRESATTRS_PROCESS_PID]: process.pid,\n            [semantic_conventions_1.SEMRESATTRS_PROCESS_EXECUTABLE_NAME]: process.title,\n            [semantic_conventions_1.SEMRESATTRS_PROCESS_EXECUTABLE_PATH]: process.execPath,\n            [semantic_conventions_1.SEMRESATTRS_PROCESS_COMMAND_ARGS]: [\n                process.argv[0],\n                ...process.execArgv,\n                ...process.argv.slice(1),\n            ],\n            [semantic_conventions_1.SEMRESATTRS_PROCESS_RUNTIME_VERSION]: process.versions.node,\n            [semantic_conventions_1.SEMRESATTRS_PROCESS_RUNTIME_NAME]: 'nodejs',\n            [semantic_conventions_1.SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION]: 'Node.js',\n        };\n        if (process.argv.length > 1) {\n            attributes[semantic_conventions_1.SEMRESATTRS_PROCESS_COMMAND] = process.argv[1];\n        }\n        try {\n            const userInfo = os.userInfo();\n            attributes[semantic_conventions_1.SEMRESATTRS_PROCESS_OWNER] = userInfo.username;\n        }\n        catch (e) {\n            api_1.diag.debug(`error obtaining process owner: ${e}`);\n        }\n        return new Resource_1.Resource(attributes);\n    }\n}\nexports.processDetectorSync = new ProcessDetectorSync();\n//# sourceMappingURL=ProcessDetectorSync.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.processDetector = void 0;\nconst ProcessDetectorSync_1 = require(\"./ProcessDetectorSync\");\n/**\n * ProcessDetector will be used to detect the resources related current process running\n * and being instrumented from the NodeJS Process module.\n */\nclass ProcessDetector {\n    detect(config) {\n        return Promise.resolve(ProcessDetectorSync_1.processDetectorSync.detect(config));\n    }\n}\nexports.processDetector = new ProcessDetector();\n//# sourceMappingURL=ProcessDetector.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serviceInstanceIdDetectorSync = void 0;\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst Resource_1 = require(\"../../../Resource\");\nconst crypto_1 = require(\"crypto\");\n/**\n * ServiceInstanceIdDetectorSync detects the resources related to the service instance ID.\n */\nclass ServiceInstanceIdDetectorSync {\n    detect(_config) {\n        const attributes = {\n            [semantic_conventions_1.SEMRESATTRS_SERVICE_INSTANCE_ID]: (0, crypto_1.randomUUID)(),\n        };\n        return new Resource_1.Resource(attributes);\n    }\n}\n/**\n * @experimental\n */\nexports.serviceInstanceIdDetectorSync = new ServiceInstanceIdDetectorSync();\n//# sourceMappingURL=ServiceInstanceIdDetectorSync.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serviceInstanceIdDetectorSync = exports.processDetectorSync = exports.processDetector = exports.osDetectorSync = exports.osDetector = exports.hostDetectorSync = exports.hostDetector = void 0;\nvar HostDetector_1 = require(\"./HostDetector\");\nObject.defineProperty(exports, \"hostDetector\", { enumerable: true, get: function () { return HostDetector_1.hostDetector; } });\nvar HostDetectorSync_1 = require(\"./HostDetectorSync\");\nObject.defineProperty(exports, \"hostDetectorSync\", { enumerable: true, get: function () { return HostDetectorSync_1.hostDetectorSync; } });\nvar OSDetector_1 = require(\"./OSDetector\");\nObject.defineProperty(exports, \"osDetector\", { enumerable: true, get: function () { return OSDetector_1.osDetector; } });\nvar OSDetectorSync_1 = require(\"./OSDetectorSync\");\nObject.defineProperty(exports, \"osDetectorSync\", { enumerable: true, get: function () { return OSDetectorSync_1.osDetectorSync; } });\nvar ProcessDetector_1 = require(\"./ProcessDetector\");\nObject.defineProperty(exports, \"processDetector\", { enumerable: true, get: function () { return ProcessDetector_1.processDetector; } });\nvar ProcessDetectorSync_1 = require(\"./ProcessDetectorSync\");\nObject.defineProperty(exports, \"processDetectorSync\", { enumerable: true, get: function () { return ProcessDetectorSync_1.processDetectorSync; } });\nvar ServiceInstanceIdDetectorSync_1 = require(\"./ServiceInstanceIdDetectorSync\");\nObject.defineProperty(exports, \"serviceInstanceIdDetectorSync\", { enumerable: true, get: function () { return ServiceInstanceIdDetectorSync_1.serviceInstanceIdDetectorSync; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serviceInstanceIdDetectorSync = exports.processDetectorSync = exports.processDetector = exports.osDetectorSync = exports.osDetector = exports.hostDetectorSync = exports.hostDetector = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"hostDetector\", { enumerable: true, get: function () { return node_1.hostDetector; } });\nObject.defineProperty(exports, \"hostDetectorSync\", { enumerable: true, get: function () { return node_1.hostDetectorSync; } });\nObject.defineProperty(exports, \"osDetector\", { enumerable: true, get: function () { return node_1.osDetector; } });\nObject.defineProperty(exports, \"osDetectorSync\", { enumerable: true, get: function () { return node_1.osDetectorSync; } });\nObject.defineProperty(exports, \"processDetector\", { enumerable: true, get: function () { return node_1.processDetector; } });\nObject.defineProperty(exports, \"processDetectorSync\", { enumerable: true, get: function () { return node_1.processDetectorSync; } });\nObject.defineProperty(exports, \"serviceInstanceIdDetectorSync\", { enumerable: true, get: function () { return node_1.serviceInstanceIdDetectorSync; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.browserDetectorSync = void 0;\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst api_1 = require(\"@opentelemetry/api\");\nconst Resource_1 = require(\"../Resource\");\n/**\n * BrowserDetectorSync will be used to detect the resources related to browser.\n */\nclass BrowserDetectorSync {\n    detect(config) {\n        var _a, _b, _c;\n        const isBrowser = typeof navigator !== 'undefined' &&\n            ((_b = (_a = global.process) === null || _a === void 0 ? void 0 : _a.versions) === null || _b === void 0 ? void 0 : _b.node) === undefined && // Node.js v21 adds `navigator`\n            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n            // @ts-ignore don't have Bun types\n            ((_c = global.Bun) === null || _c === void 0 ? void 0 : _c.version) === undefined; // Bun (bun.sh) defines `navigator`\n        if (!isBrowser) {\n            return Resource_1.Resource.empty();\n        }\n        const browserResource = {\n            [semantic_conventions_1.SEMRESATTRS_PROCESS_RUNTIME_NAME]: 'browser',\n            [semantic_conventions_1.SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION]: 'Web Browser',\n            [semantic_conventions_1.SEMRESATTRS_PROCESS_RUNTIME_VERSION]: navigator.userAgent,\n        };\n        return this._getResourceAttributes(browserResource, config);\n    }\n    /**\n     * Validates process resource attribute map from process variables\n     *\n     * @param browserResource The un-sanitized resource attributes from process as key/value pairs.\n     * @param config: Config\n     * @returns The sanitized resource attributes.\n     */\n    _getResourceAttributes(browserResource, _config) {\n        if (browserResource[semantic_conventions_1.SEMRESATTRS_PROCESS_RUNTIME_VERSION] === '') {\n            api_1.diag.debug('BrowserDetector failed: Unable to find required browser resources. ');\n            return Resource_1.Resource.empty();\n        }\n        else {\n            return new Resource_1.Resource(Object.assign({}, browserResource));\n        }\n    }\n}\nexports.browserDetectorSync = new BrowserDetectorSync();\n//# sourceMappingURL=BrowserDetectorSync.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.browserDetector = void 0;\nconst BrowserDetectorSync_1 = require(\"./BrowserDetectorSync\");\n/**\n * BrowserDetector will be used to detect the resources related to browser.\n */\nclass BrowserDetector {\n    detect(config) {\n        return Promise.resolve(BrowserDetectorSync_1.browserDetectorSync.detect(config));\n    }\n}\nexports.browserDetector = new BrowserDetector();\n//# sourceMappingURL=BrowserDetector.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.envDetectorSync = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst Resource_1 = require(\"../Resource\");\n/**\n * EnvDetectorSync can be used to detect the presence of and create a Resource\n * from the OTEL_RESOURCE_ATTRIBUTES environment variable.\n */\nclass EnvDetectorSync {\n    constructor() {\n        // Type, attribute keys, and attribute values should not exceed 256 characters.\n        this._MAX_LENGTH = 255;\n        // OTEL_RESOURCE_ATTRIBUTES is a comma-separated list of attributes.\n        this._COMMA_SEPARATOR = ',';\n        // OTEL_RESOURCE_ATTRIBUTES contains key value pair separated by '='.\n        this._LABEL_KEY_VALUE_SPLITTER = '=';\n        this._ERROR_MESSAGE_INVALID_CHARS = 'should be a ASCII string with a length greater than 0 and not exceed ' +\n            this._MAX_LENGTH +\n            ' characters.';\n        this._ERROR_MESSAGE_INVALID_VALUE = 'should be a ASCII string with a length not exceed ' +\n            this._MAX_LENGTH +\n            ' characters.';\n    }\n    /**\n     * Returns a {@link Resource} populated with attributes from the\n     * OTEL_RESOURCE_ATTRIBUTES environment variable. Note this is an async\n     * function to conform to the Detector interface.\n     *\n     * @param config The resource detection config\n     */\n    detect(_config) {\n        const attributes = {};\n        const env = (0, core_1.getEnv)();\n        const rawAttributes = env.OTEL_RESOURCE_ATTRIBUTES;\n        const serviceName = env.OTEL_SERVICE_NAME;\n        if (rawAttributes) {\n            try {\n                const parsedAttributes = this._parseResourceAttributes(rawAttributes);\n                Object.assign(attributes, parsedAttributes);\n            }\n            catch (e) {\n                api_1.diag.debug(`EnvDetector failed: ${e.message}`);\n            }\n        }\n        if (serviceName) {\n            attributes[semantic_conventions_1.SEMRESATTRS_SERVICE_NAME] = serviceName;\n        }\n        return new Resource_1.Resource(attributes);\n    }\n    /**\n     * Creates an attribute map from the OTEL_RESOURCE_ATTRIBUTES environment\n     * variable.\n     *\n     * OTEL_RESOURCE_ATTRIBUTES: A comma-separated list of attributes describing\n     * the source in more detail, e.g. “key1=val1,key2=val2”. Domain names and\n     * paths are accepted as attribute keys. Values may be quoted or unquoted in\n     * general. If a value contains whitespace, =, or \" characters, it must\n     * always be quoted.\n     *\n     * @param rawEnvAttributes The resource attributes as a comma-separated list\n     * of key/value pairs.\n     * @returns The sanitized resource attributes.\n     */\n    _parseResourceAttributes(rawEnvAttributes) {\n        if (!rawEnvAttributes)\n            return {};\n        const attributes = {};\n        const rawAttributes = rawEnvAttributes.split(this._COMMA_SEPARATOR, -1);\n        for (const rawAttribute of rawAttributes) {\n            const keyValuePair = rawAttribute.split(this._LABEL_KEY_VALUE_SPLITTER, -1);\n            if (keyValuePair.length !== 2) {\n                continue;\n            }\n            let [key, value] = keyValuePair;\n            // Leading and trailing whitespaces are trimmed.\n            key = key.trim();\n            value = value.trim().split(/^\"|\"$/).join('');\n            if (!this._isValidAndNotEmpty(key)) {\n                throw new Error(`Attribute key ${this._ERROR_MESSAGE_INVALID_CHARS}`);\n            }\n            if (!this._isValid(value)) {\n                throw new Error(`Attribute value ${this._ERROR_MESSAGE_INVALID_VALUE}`);\n            }\n            attributes[key] = decodeURIComponent(value);\n        }\n        return attributes;\n    }\n    /**\n     * Determines whether the given String is a valid printable ASCII string with\n     * a length not exceed _MAX_LENGTH characters.\n     *\n     * @param str The String to be validated.\n     * @returns Whether the String is valid.\n     */\n    _isValid(name) {\n        return name.length <= this._MAX_LENGTH && this._isBaggageOctetString(name);\n    }\n    // https://www.w3.org/TR/baggage/#definition\n    _isBaggageOctetString(str) {\n        for (let i = 0; i < str.length; i++) {\n            const ch = str.charCodeAt(i);\n            if (ch < 0x21 || ch === 0x2c || ch === 0x3b || ch === 0x5c || ch > 0x7e) {\n                return false;\n            }\n        }\n        return true;\n    }\n    /**\n     * Determines whether the given String is a valid printable ASCII string with\n     * a length greater than 0 and not exceed _MAX_LENGTH characters.\n     *\n     * @param str The String to be validated.\n     * @returns Whether the String is valid and not empty.\n     */\n    _isValidAndNotEmpty(str) {\n        return str.length > 0 && this._isValid(str);\n    }\n}\nexports.envDetectorSync = new EnvDetectorSync();\n//# sourceMappingURL=EnvDetectorSync.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.envDetector = void 0;\nconst EnvDetectorSync_1 = require(\"./EnvDetectorSync\");\n/**\n * EnvDetector can be used to detect the presence of and create a Resource\n * from the OTEL_RESOURCE_ATTRIBUTES environment variable.\n */\nclass EnvDetector {\n    /**\n     * Returns a {@link Resource} populated with attributes from the\n     * OTEL_RESOURCE_ATTRIBUTES environment variable. Note this is an async\n     * function to conform to the Detector interface.\n     *\n     * @param config The resource detection config\n     */\n    detect(config) {\n        return Promise.resolve(EnvDetectorSync_1.envDetectorSync.detect(config));\n    }\n}\nexports.envDetector = new EnvDetector();\n//# sourceMappingURL=EnvDetector.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.envDetectorSync = exports.browserDetectorSync = exports.envDetector = exports.browserDetector = exports.serviceInstanceIdDetectorSync = exports.processDetectorSync = exports.processDetector = exports.osDetectorSync = exports.osDetector = exports.hostDetectorSync = exports.hostDetector = void 0;\nvar platform_1 = require(\"./platform\");\nObject.defineProperty(exports, \"hostDetector\", { enumerable: true, get: function () { return platform_1.hostDetector; } });\nObject.defineProperty(exports, \"hostDetectorSync\", { enumerable: true, get: function () { return platform_1.hostDetectorSync; } });\nObject.defineProperty(exports, \"osDetector\", { enumerable: true, get: function () { return platform_1.osDetector; } });\nObject.defineProperty(exports, \"osDetectorSync\", { enumerable: true, get: function () { return platform_1.osDetectorSync; } });\nObject.defineProperty(exports, \"processDetector\", { enumerable: true, get: function () { return platform_1.processDetector; } });\nObject.defineProperty(exports, \"processDetectorSync\", { enumerable: true, get: function () { return platform_1.processDetectorSync; } });\nObject.defineProperty(exports, \"serviceInstanceIdDetectorSync\", { enumerable: true, get: function () { return platform_1.serviceInstanceIdDetectorSync; } });\nvar BrowserDetector_1 = require(\"./BrowserDetector\");\nObject.defineProperty(exports, \"browserDetector\", { enumerable: true, get: function () { return BrowserDetector_1.browserDetector; } });\nvar EnvDetector_1 = require(\"./EnvDetector\");\nObject.defineProperty(exports, \"envDetector\", { enumerable: true, get: function () { return EnvDetector_1.envDetector; } });\nvar BrowserDetectorSync_1 = require(\"./BrowserDetectorSync\");\nObject.defineProperty(exports, \"browserDetectorSync\", { enumerable: true, get: function () { return BrowserDetectorSync_1.browserDetectorSync; } });\nvar EnvDetectorSync_1 = require(\"./EnvDetectorSync\");\nObject.defineProperty(exports, \"envDetectorSync\", { enumerable: true, get: function () { return EnvDetectorSync_1.envDetectorSync; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPromiseLike = void 0;\nconst isPromiseLike = (val) => {\n    return (val !== null && typeof val === 'object' && typeof val.then === 'function');\n};\nexports.isPromiseLike = isPromiseLike;\n//# sourceMappingURL=utils.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.detectResourcesSync = exports.detectResources = void 0;\nconst Resource_1 = require(\"./Resource\");\nconst api_1 = require(\"@opentelemetry/api\");\nconst utils_1 = require(\"./utils\");\n/**\n * Runs all resource detectors and returns the results merged into a single Resource. Promise\n * does not resolve until all the underlying detectors have resolved, unlike\n * detectResourcesSync.\n *\n * @deprecated use detectResourcesSync() instead.\n * @param config Configuration for resource detection\n */\nconst detectResources = async (config = {}) => {\n    const resources = await Promise.all((config.detectors || []).map(async (d) => {\n        try {\n            const resource = await d.detect(config);\n            api_1.diag.debug(`${d.constructor.name} found resource.`, resource);\n            return resource;\n        }\n        catch (e) {\n            api_1.diag.debug(`${d.constructor.name} failed: ${e.message}`);\n            return Resource_1.Resource.empty();\n        }\n    }));\n    // Future check if verbose logging is enabled issue #1903\n    logResources(resources);\n    return resources.reduce((acc, resource) => acc.merge(resource), Resource_1.Resource.empty());\n};\nexports.detectResources = detectResources;\n/**\n * Runs all resource detectors synchronously, merging their results. In case of attribute collision later resources will take precedence.\n *\n * @param config Configuration for resource detection\n */\nconst detectResourcesSync = (config = {}) => {\n    var _a;\n    const resources = ((_a = config.detectors) !== null && _a !== void 0 ? _a : []).map((d) => {\n        try {\n            const resourceOrPromise = d.detect(config);\n            let resource;\n            if ((0, utils_1.isPromiseLike)(resourceOrPromise)) {\n                const createPromise = async () => {\n                    var _a;\n                    const resolvedResource = await resourceOrPromise;\n                    await ((_a = resolvedResource.waitForAsyncAttributes) === null || _a === void 0 ? void 0 : _a.call(resolvedResource));\n                    return resolvedResource.attributes;\n                };\n                resource = new Resource_1.Resource({}, createPromise());\n            }\n            else {\n                resource = resourceOrPromise;\n            }\n            if (resource.waitForAsyncAttributes) {\n                void resource\n                    .waitForAsyncAttributes()\n                    .then(() => api_1.diag.debug(`${d.constructor.name} found resource.`, resource));\n            }\n            else {\n                api_1.diag.debug(`${d.constructor.name} found resource.`, resource);\n            }\n            return resource;\n        }\n        catch (e) {\n            api_1.diag.error(`${d.constructor.name} failed: ${e.message}`);\n            return Resource_1.Resource.empty();\n        }\n    });\n    const mergedResources = resources.reduce((acc, resource) => acc.merge(resource), Resource_1.Resource.empty());\n    if (mergedResources.waitForAsyncAttributes) {\n        void mergedResources.waitForAsyncAttributes().then(() => {\n            // Future check if verbose logging is enabled issue #1903\n            logResources(resources);\n        });\n    }\n    return mergedResources;\n};\nexports.detectResourcesSync = detectResourcesSync;\n/**\n * Writes debug information about the detected resources to the logger defined in the resource detection config, if one is provided.\n *\n * @param resources The array of {@link Resource} that should be logged. Empty entries will be ignored.\n */\nconst logResources = (resources) => {\n    resources.forEach(resource => {\n        // Print only populated resources\n        if (Object.keys(resource.attributes).length > 0) {\n            const resourceDebugString = JSON.stringify(resource.attributes, null, 4);\n            api_1.diag.verbose(resourceDebugString);\n        }\n    });\n};\n//# sourceMappingURL=detect-resources.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.detectResources = exports.detectResourcesSync = exports.serviceInstanceIdDetectorSync = exports.processDetectorSync = exports.processDetector = exports.osDetectorSync = exports.osDetector = exports.hostDetectorSync = exports.hostDetector = exports.envDetectorSync = exports.envDetector = exports.browserDetectorSync = exports.browserDetector = exports.defaultServiceName = exports.Resource = void 0;\nvar Resource_1 = require(\"./Resource\");\nObject.defineProperty(exports, \"Resource\", { enumerable: true, get: function () { return Resource_1.Resource; } });\nvar platform_1 = require(\"./platform\");\nObject.defineProperty(exports, \"defaultServiceName\", { enumerable: true, get: function () { return platform_1.defaultServiceName; } });\nvar detectors_1 = require(\"./detectors\");\nObject.defineProperty(exports, \"browserDetector\", { enumerable: true, get: function () { return detectors_1.browserDetector; } });\nObject.defineProperty(exports, \"browserDetectorSync\", { enumerable: true, get: function () { return detectors_1.browserDetectorSync; } });\nObject.defineProperty(exports, \"envDetector\", { enumerable: true, get: function () { return detectors_1.envDetector; } });\nObject.defineProperty(exports, \"envDetectorSync\", { enumerable: true, get: function () { return detectors_1.envDetectorSync; } });\nObject.defineProperty(exports, \"hostDetector\", { enumerable: true, get: function () { return detectors_1.hostDetector; } });\nObject.defineProperty(exports, \"hostDetectorSync\", { enumerable: true, get: function () { return detectors_1.hostDetectorSync; } });\nObject.defineProperty(exports, \"osDetector\", { enumerable: true, get: function () { return detectors_1.osDetector; } });\nObject.defineProperty(exports, \"osDetectorSync\", { enumerable: true, get: function () { return detectors_1.osDetectorSync; } });\nObject.defineProperty(exports, \"processDetector\", { enumerable: true, get: function () { return detectors_1.processDetector; } });\nObject.defineProperty(exports, \"processDetectorSync\", { enumerable: true, get: function () { return detectors_1.processDetectorSync; } });\nObject.defineProperty(exports, \"serviceInstanceIdDetectorSync\", { enumerable: true, get: function () { return detectors_1.serviceInstanceIdDetectorSync; } });\nvar detect_resources_1 = require(\"./detect-resources\");\nObject.defineProperty(exports, \"detectResourcesSync\", { enumerable: true, get: function () { return detect_resources_1.detectResourcesSync; } });\nObject.defineProperty(exports, \"detectResources\", { enumerable: true, get: function () { return detect_resources_1.detectResources; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MultiSpanProcessor = void 0;\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * Implementation of the {@link SpanProcessor} that simply forwards all\n * received events to a list of {@link SpanProcessor}s.\n */\nclass MultiSpanProcessor {\n    constructor(_spanProcessors) {\n        this._spanProcessors = _spanProcessors;\n    }\n    forceFlush() {\n        const promises = [];\n        for (const spanProcessor of this._spanProcessors) {\n            promises.push(spanProcessor.forceFlush());\n        }\n        return new Promise(resolve => {\n            Promise.all(promises)\n                .then(() => {\n                resolve();\n            })\n                .catch(error => {\n                (0, core_1.globalErrorHandler)(error || new Error('MultiSpanProcessor: forceFlush failed'));\n                resolve();\n            });\n        });\n    }\n    onStart(span, context) {\n        for (const spanProcessor of this._spanProcessors) {\n            spanProcessor.onStart(span, context);\n        }\n    }\n    onEnd(span) {\n        for (const spanProcessor of this._spanProcessors) {\n            spanProcessor.onEnd(span);\n        }\n    }\n    shutdown() {\n        const promises = [];\n        for (const spanProcessor of this._spanProcessors) {\n            promises.push(spanProcessor.shutdown());\n        }\n        return new Promise((resolve, reject) => {\n            Promise.all(promises).then(() => {\n                resolve();\n            }, reject);\n        });\n    }\n}\nexports.MultiSpanProcessor = MultiSpanProcessor;\n//# sourceMappingURL=MultiSpanProcessor.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopSpanProcessor = void 0;\n/** No-op implementation of SpanProcessor */\nclass NoopSpanProcessor {\n    onStart(_span, _context) { }\n    onEnd(_span) { }\n    shutdown() {\n        return Promise.resolve();\n    }\n    forceFlush() {\n        return Promise.resolve();\n    }\n}\nexports.NoopSpanProcessor = NoopSpanProcessor;\n//# sourceMappingURL=NoopSpanProcessor.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BasicTracerProvider = exports.ForceFlushState = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst resources_1 = require(\"@opentelemetry/resources\");\nconst Tracer_1 = require(\"./Tracer\");\nconst config_1 = require(\"./config\");\nconst MultiSpanProcessor_1 = require(\"./MultiSpanProcessor\");\nconst NoopSpanProcessor_1 = require(\"./export/NoopSpanProcessor\");\nconst platform_1 = require(\"./platform\");\nconst utility_1 = require(\"./utility\");\nvar ForceFlushState;\n(function (ForceFlushState) {\n    ForceFlushState[ForceFlushState[\"resolved\"] = 0] = \"resolved\";\n    ForceFlushState[ForceFlushState[\"timeout\"] = 1] = \"timeout\";\n    ForceFlushState[ForceFlushState[\"error\"] = 2] = \"error\";\n    ForceFlushState[ForceFlushState[\"unresolved\"] = 3] = \"unresolved\";\n})(ForceFlushState = exports.ForceFlushState || (exports.ForceFlushState = {}));\n/**\n * This class represents a basic tracer provider which platform libraries can extend\n */\nclass BasicTracerProvider {\n    constructor(config = {}) {\n        var _a, _b;\n        this._registeredSpanProcessors = [];\n        this._tracers = new Map();\n        const mergedConfig = (0, core_1.merge)({}, (0, config_1.loadDefaultConfig)(), (0, utility_1.reconfigureLimits)(config));\n        this.resource = (_a = mergedConfig.resource) !== null && _a !== void 0 ? _a : resources_1.Resource.empty();\n        if (mergedConfig.mergeResourceWithDefaults) {\n            this.resource = resources_1.Resource.default().merge(this.resource);\n        }\n        this._config = Object.assign({}, mergedConfig, {\n            resource: this.resource,\n        });\n        if ((_b = config.spanProcessors) === null || _b === void 0 ? void 0 : _b.length) {\n            this._registeredSpanProcessors = [...config.spanProcessors];\n            this.activeSpanProcessor = new MultiSpanProcessor_1.MultiSpanProcessor(this._registeredSpanProcessors);\n        }\n        else {\n            const defaultExporter = this._buildExporterFromEnv();\n            if (defaultExporter !== undefined) {\n                const batchProcessor = new platform_1.BatchSpanProcessor(defaultExporter);\n                this.activeSpanProcessor = batchProcessor;\n            }\n            else {\n                this.activeSpanProcessor = new NoopSpanProcessor_1.NoopSpanProcessor();\n            }\n        }\n    }\n    getTracer(name, version, options) {\n        const key = `${name}@${version || ''}:${(options === null || options === void 0 ? void 0 : options.schemaUrl) || ''}`;\n        if (!this._tracers.has(key)) {\n            this._tracers.set(key, new Tracer_1.Tracer({ name, version, schemaUrl: options === null || options === void 0 ? void 0 : options.schemaUrl }, this._config, this));\n        }\n        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n        return this._tracers.get(key);\n    }\n    /**\n     * @deprecated please use {@link TracerConfig} spanProcessors property\n     * Adds a new {@link SpanProcessor} to this tracer.\n     * @param spanProcessor the new SpanProcessor to be added.\n     */\n    addSpanProcessor(spanProcessor) {\n        if (this._registeredSpanProcessors.length === 0) {\n            // since we might have enabled by default a batchProcessor, we disable it\n            // before adding the new one\n            this.activeSpanProcessor\n                .shutdown()\n                .catch(err => api_1.diag.error('Error while trying to shutdown current span processor', err));\n        }\n        this._registeredSpanProcessors.push(spanProcessor);\n        this.activeSpanProcessor = new MultiSpanProcessor_1.MultiSpanProcessor(this._registeredSpanProcessors);\n    }\n    getActiveSpanProcessor() {\n        return this.activeSpanProcessor;\n    }\n    /**\n     * Register this TracerProvider for use with the OpenTelemetry API.\n     * Undefined values may be replaced with defaults, and\n     * null values will be skipped.\n     *\n     * @param config Configuration object for SDK registration\n     */\n    register(config = {}) {\n        api_1.trace.setGlobalTracerProvider(this);\n        if (config.propagator === undefined) {\n            config.propagator = this._buildPropagatorFromEnv();\n        }\n        if (config.contextManager) {\n            api_1.context.setGlobalContextManager(config.contextManager);\n        }\n        if (config.propagator) {\n            api_1.propagation.setGlobalPropagator(config.propagator);\n        }\n    }\n    forceFlush() {\n        const timeout = this._config.forceFlushTimeoutMillis;\n        const promises = this._registeredSpanProcessors.map((spanProcessor) => {\n            return new Promise(resolve => {\n                let state;\n                const timeoutInterval = setTimeout(() => {\n                    resolve(new Error(`Span processor did not completed within timeout period of ${timeout} ms`));\n                    state = ForceFlushState.timeout;\n                }, timeout);\n                spanProcessor\n                    .forceFlush()\n                    .then(() => {\n                    clearTimeout(timeoutInterval);\n                    if (state !== ForceFlushState.timeout) {\n                        state = ForceFlushState.resolved;\n                        resolve(state);\n                    }\n                })\n                    .catch(error => {\n                    clearTimeout(timeoutInterval);\n                    state = ForceFlushState.error;\n                    resolve(error);\n                });\n            });\n        });\n        return new Promise((resolve, reject) => {\n            Promise.all(promises)\n                .then(results => {\n                const errors = results.filter(result => result !== ForceFlushState.resolved);\n                if (errors.length > 0) {\n                    reject(errors);\n                }\n                else {\n                    resolve();\n                }\n            })\n                .catch(error => reject([error]));\n        });\n    }\n    shutdown() {\n        return this.activeSpanProcessor.shutdown();\n    }\n    /**\n     * TS cannot yet infer the type of this.constructor:\n     * https://github.com/Microsoft/TypeScript/issues/3841#issuecomment-337560146\n     * There is no need to override either of the getters in your child class.\n     * The type of the registered component maps should be the same across all\n     * classes in the inheritance tree.\n     */\n    _getPropagator(name) {\n        var _a;\n        return (_a = this.constructor._registeredPropagators.get(name)) === null || _a === void 0 ? void 0 : _a();\n    }\n    _getSpanExporter(name) {\n        var _a;\n        return (_a = this.constructor._registeredExporters.get(name)) === null || _a === void 0 ? void 0 : _a();\n    }\n    _buildPropagatorFromEnv() {\n        // per spec, propagators from env must be deduplicated\n        const uniquePropagatorNames = Array.from(new Set((0, core_1.getEnv)().OTEL_PROPAGATORS));\n        const propagators = uniquePropagatorNames.map(name => {\n            const propagator = this._getPropagator(name);\n            if (!propagator) {\n                api_1.diag.warn(`Propagator \"${name}\" requested through environment variable is unavailable.`);\n            }\n            return propagator;\n        });\n        const validPropagators = propagators.reduce((list, item) => {\n            if (item) {\n                list.push(item);\n            }\n            return list;\n        }, []);\n        if (validPropagators.length === 0) {\n            return;\n        }\n        else if (uniquePropagatorNames.length === 1) {\n            return validPropagators[0];\n        }\n        else {\n            return new core_1.CompositePropagator({\n                propagators: validPropagators,\n            });\n        }\n    }\n    _buildExporterFromEnv() {\n        const exporterName = (0, core_1.getEnv)().OTEL_TRACES_EXPORTER;\n        if (exporterName === 'none' || exporterName === '')\n            return;\n        const exporter = this._getSpanExporter(exporterName);\n        if (!exporter) {\n            api_1.diag.error(`Exporter \"${exporterName}\" requested through environment variable is unavailable.`);\n        }\n        return exporter;\n    }\n}\nexports.BasicTracerProvider = BasicTracerProvider;\nBasicTracerProvider._registeredPropagators = new Map([\n    ['tracecontext', () => new core_1.W3CTraceContextPropagator()],\n    ['baggage', () => new core_1.W3CBaggagePropagator()],\n]);\nBasicTracerProvider._registeredExporters = new Map();\n//# sourceMappingURL=BasicTracerProvider.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsoleSpanExporter = void 0;\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * This is implementation of {@link SpanExporter} that prints spans to the\n * console. This class can be used for diagnostic purposes.\n *\n * NOTE: This {@link SpanExporter} is intended for diagnostics use only, output rendered to the console may change at any time.\n */\n/* eslint-disable no-console */\nclass ConsoleSpanExporter {\n    /**\n     * Export spans.\n     * @param spans\n     * @param resultCallback\n     */\n    export(spans, resultCallback) {\n        return this._sendSpans(spans, resultCallback);\n    }\n    /**\n     * Shutdown the exporter.\n     */\n    shutdown() {\n        this._sendSpans([]);\n        return this.forceFlush();\n    }\n    /**\n     * Exports any pending spans in exporter\n     */\n    forceFlush() {\n        return Promise.resolve();\n    }\n    /**\n     * converts span info into more readable format\n     * @param span\n     */\n    _exportInfo(span) {\n        var _a;\n        return {\n            resource: {\n                attributes: span.resource.attributes,\n            },\n            instrumentationScope: span.instrumentationLibrary,\n            traceId: span.spanContext().traceId,\n            parentId: span.parentSpanId,\n            traceState: (_a = span.spanContext().traceState) === null || _a === void 0 ? void 0 : _a.serialize(),\n            name: span.name,\n            id: span.spanContext().spanId,\n            kind: span.kind,\n            timestamp: (0, core_1.hrTimeToMicroseconds)(span.startTime),\n            duration: (0, core_1.hrTimeToMicroseconds)(span.duration),\n            attributes: span.attributes,\n            status: span.status,\n            events: span.events,\n            links: span.links,\n        };\n    }\n    /**\n     * Showing spans in console\n     * @param spans\n     * @param done\n     */\n    _sendSpans(spans, done) {\n        for (const span of spans) {\n            console.dir(this._exportInfo(span), { depth: 3 });\n        }\n        if (done) {\n            return done({ code: core_1.ExportResultCode.SUCCESS });\n        }\n    }\n}\nexports.ConsoleSpanExporter = ConsoleSpanExporter;\n//# sourceMappingURL=ConsoleSpanExporter.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InMemorySpanExporter = void 0;\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * This class can be used for testing purposes. It stores the exported spans\n * in a list in memory that can be retrieved using the `getFinishedSpans()`\n * method.\n */\nclass InMemorySpanExporter {\n    constructor() {\n        this._finishedSpans = [];\n        /**\n         * Indicates if the exporter has been \"shutdown.\"\n         * When false, exported spans will not be stored in-memory.\n         */\n        this._stopped = false;\n    }\n    export(spans, resultCallback) {\n        if (this._stopped)\n            return resultCallback({\n                code: core_1.ExportResultCode.FAILED,\n                error: new Error('Exporter has been stopped'),\n            });\n        this._finishedSpans.push(...spans);\n        setTimeout(() => resultCallback({ code: core_1.ExportResultCode.SUCCESS }), 0);\n    }\n    shutdown() {\n        this._stopped = true;\n        this._finishedSpans = [];\n        return this.forceFlush();\n    }\n    /**\n     * Exports any pending spans in the exporter\n     */\n    forceFlush() {\n        return Promise.resolve();\n    }\n    reset() {\n        this._finishedSpans = [];\n    }\n    getFinishedSpans() {\n        return this._finishedSpans;\n    }\n}\nexports.InMemorySpanExporter = InMemorySpanExporter;\n//# sourceMappingURL=InMemorySpanExporter.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SimpleSpanProcessor = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * An implementation of the {@link SpanProcessor} that converts the {@link Span}\n * to {@link ReadableSpan} and passes it to the configured exporter.\n *\n * Only spans that are sampled are converted.\n *\n * NOTE: This {@link SpanProcessor} exports every ended span individually instead of batching spans together, which causes significant performance overhead with most exporters. For production use, please consider using the {@link BatchSpanProcessor} instead.\n */\nclass SimpleSpanProcessor {\n    constructor(_exporter) {\n        this._exporter = _exporter;\n        this._shutdownOnce = new core_1.BindOnceFuture(this._shutdown, this);\n        this._unresolvedExports = new Set();\n    }\n    async forceFlush() {\n        // await unresolved resources before resolving\n        await Promise.all(Array.from(this._unresolvedExports));\n        if (this._exporter.forceFlush) {\n            await this._exporter.forceFlush();\n        }\n    }\n    onStart(_span, _parentContext) { }\n    onEnd(span) {\n        var _a, _b;\n        if (this._shutdownOnce.isCalled) {\n            return;\n        }\n        if ((span.spanContext().traceFlags & api_1.TraceFlags.SAMPLED) === 0) {\n            return;\n        }\n        const doExport = () => core_1.internal\n            ._export(this._exporter, [span])\n            .then((result) => {\n            var _a;\n            if (result.code !== core_1.ExportResultCode.SUCCESS) {\n                (0, core_1.globalErrorHandler)((_a = result.error) !== null && _a !== void 0 ? _a : new Error(`SimpleSpanProcessor: span export failed (status ${result})`));\n            }\n        })\n            .catch(error => {\n            (0, core_1.globalErrorHandler)(error);\n        });\n        // Avoid scheduling a promise to make the behavior more predictable and easier to test\n        if (span.resource.asyncAttributesPending) {\n            const exportPromise = (_b = (_a = span.resource).waitForAsyncAttributes) === null || _b === void 0 ? void 0 : _b.call(_a).then(() => {\n                if (exportPromise != null) {\n                    this._unresolvedExports.delete(exportPromise);\n                }\n                return doExport();\n            }, err => (0, core_1.globalErrorHandler)(err));\n            // store the unresolved exports\n            if (exportPromise != null) {\n                this._unresolvedExports.add(exportPromise);\n            }\n        }\n        else {\n            void doExport();\n        }\n    }\n    shutdown() {\n        return this._shutdownOnce.call();\n    }\n    _shutdown() {\n        return this._exporter.shutdown();\n    }\n}\nexports.SimpleSpanProcessor = SimpleSpanProcessor;\n//# sourceMappingURL=SimpleSpanProcessor.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Span = exports.SamplingDecision = exports.TraceIdRatioBasedSampler = exports.ParentBasedSampler = exports.AlwaysOnSampler = exports.AlwaysOffSampler = exports.NoopSpanProcessor = exports.SimpleSpanProcessor = exports.InMemorySpanExporter = exports.ConsoleSpanExporter = exports.RandomIdGenerator = exports.BatchSpanProcessor = exports.ForceFlushState = exports.BasicTracerProvider = exports.Tracer = void 0;\nvar Tracer_1 = require(\"./Tracer\");\nObject.defineProperty(exports, \"Tracer\", { enumerable: true, get: function () { return Tracer_1.Tracer; } });\nvar BasicTracerProvider_1 = require(\"./BasicTracerProvider\");\nObject.defineProperty(exports, \"BasicTracerProvider\", { enumerable: true, get: function () { return BasicTracerProvider_1.BasicTracerProvider; } });\nObject.defineProperty(exports, \"ForceFlushState\", { enumerable: true, get: function () { return BasicTracerProvider_1.ForceFlushState; } });\nvar platform_1 = require(\"./platform\");\nObject.defineProperty(exports, \"BatchSpanProcessor\", { enumerable: true, get: function () { return platform_1.BatchSpanProcessor; } });\nObject.defineProperty(exports, \"RandomIdGenerator\", { enumerable: true, get: function () { return platform_1.RandomIdGenerator; } });\nvar ConsoleSpanExporter_1 = require(\"./export/ConsoleSpanExporter\");\nObject.defineProperty(exports, \"ConsoleSpanExporter\", { enumerable: true, get: function () { return ConsoleSpanExporter_1.ConsoleSpanExporter; } });\nvar InMemorySpanExporter_1 = require(\"./export/InMemorySpanExporter\");\nObject.defineProperty(exports, \"InMemorySpanExporter\", { enumerable: true, get: function () { return InMemorySpanExporter_1.InMemorySpanExporter; } });\nvar SimpleSpanProcessor_1 = require(\"./export/SimpleSpanProcessor\");\nObject.defineProperty(exports, \"SimpleSpanProcessor\", { enumerable: true, get: function () { return SimpleSpanProcessor_1.SimpleSpanProcessor; } });\nvar NoopSpanProcessor_1 = require(\"./export/NoopSpanProcessor\");\nObject.defineProperty(exports, \"NoopSpanProcessor\", { enumerable: true, get: function () { return NoopSpanProcessor_1.NoopSpanProcessor; } });\nvar AlwaysOffSampler_1 = require(\"./sampler/AlwaysOffSampler\");\nObject.defineProperty(exports, \"AlwaysOffSampler\", { enumerable: true, get: function () { return AlwaysOffSampler_1.AlwaysOffSampler; } });\nvar AlwaysOnSampler_1 = require(\"./sampler/AlwaysOnSampler\");\nObject.defineProperty(exports, \"AlwaysOnSampler\", { enumerable: true, get: function () { return AlwaysOnSampler_1.AlwaysOnSampler; } });\nvar ParentBasedSampler_1 = require(\"./sampler/ParentBasedSampler\");\nObject.defineProperty(exports, \"ParentBasedSampler\", { enumerable: true, get: function () { return ParentBasedSampler_1.ParentBasedSampler; } });\nvar TraceIdRatioBasedSampler_1 = require(\"./sampler/TraceIdRatioBasedSampler\");\nObject.defineProperty(exports, \"TraceIdRatioBasedSampler\", { enumerable: true, get: function () { return TraceIdRatioBasedSampler_1.TraceIdRatioBasedSampler; } });\nvar Sampler_1 = require(\"./Sampler\");\nObject.defineProperty(exports, \"SamplingDecision\", { enumerable: true, get: function () { return Sampler_1.SamplingDecision; } });\nvar Span_1 = require(\"./Span\");\nObject.defineProperty(exports, \"Span\", { enumerable: true, get: function () { return Span_1.Span; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JaegerPropagator = exports.UBER_BAGGAGE_HEADER_PREFIX = exports.UBER_TRACE_ID_HEADER = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nexports.UBER_TRACE_ID_HEADER = 'uber-trace-id';\nexports.UBER_BAGGAGE_HEADER_PREFIX = 'uberctx';\n/**\n * Propagates {@link SpanContext} through Trace Context format propagation.\n * {trace-id}:{span-id}:{parent-span-id}:{flags}\n * {trace-id}\n * 64-bit or 128-bit random number in base16 format.\n * Can be variable length, shorter values are 0-padded on the left.\n * Value of 0 is invalid.\n * {span-id}\n * 64-bit random number in base16 format.\n * {parent-span-id}\n * Set to 0 because this field is deprecated.\n * {flags}\n * One byte bitmap, as two hex digits.\n * Inspired by jaeger-client-node project.\n */\nclass JaegerPropagator {\n    constructor(config) {\n        if (typeof config === 'string') {\n            this._jaegerTraceHeader = config;\n            this._jaegerBaggageHeaderPrefix = exports.UBER_BAGGAGE_HEADER_PREFIX;\n        }\n        else {\n            this._jaegerTraceHeader =\n                (config === null || config === void 0 ? void 0 : config.customTraceHeader) || exports.UBER_TRACE_ID_HEADER;\n            this._jaegerBaggageHeaderPrefix =\n                (config === null || config === void 0 ? void 0 : config.customBaggageHeaderPrefix) || exports.UBER_BAGGAGE_HEADER_PREFIX;\n        }\n    }\n    inject(context, carrier, setter) {\n        const spanContext = api_1.trace.getSpanContext(context);\n        const baggage = api_1.propagation.getBaggage(context);\n        if (spanContext && (0, core_1.isTracingSuppressed)(context) === false) {\n            const traceFlags = `0${(spanContext.traceFlags || api_1.TraceFlags.NONE).toString(16)}`;\n            setter.set(carrier, this._jaegerTraceHeader, `${spanContext.traceId}:${spanContext.spanId}:0:${traceFlags}`);\n        }\n        if (baggage) {\n            for (const [key, entry] of baggage.getAllEntries()) {\n                setter.set(carrier, `${this._jaegerBaggageHeaderPrefix}-${key}`, encodeURIComponent(entry.value));\n            }\n        }\n    }\n    extract(context, carrier, getter) {\n        var _a;\n        const uberTraceIdHeader = getter.get(carrier, this._jaegerTraceHeader);\n        const uberTraceId = Array.isArray(uberTraceIdHeader)\n            ? uberTraceIdHeader[0]\n            : uberTraceIdHeader;\n        const baggageValues = getter\n            .keys(carrier)\n            .filter(key => key.startsWith(`${this._jaegerBaggageHeaderPrefix}-`))\n            .map(key => {\n            const value = getter.get(carrier, key);\n            return {\n                key: key.substring(this._jaegerBaggageHeaderPrefix.length + 1),\n                value: Array.isArray(value) ? value[0] : value,\n            };\n        });\n        let newContext = context;\n        // if the trace id header is present and valid, inject it into the context\n        if (typeof uberTraceId === 'string') {\n            const spanContext = deserializeSpanContext(uberTraceId);\n            if (spanContext) {\n                newContext = api_1.trace.setSpanContext(newContext, spanContext);\n            }\n        }\n        if (baggageValues.length === 0)\n            return newContext;\n        // if baggage values are present, inject it into the current baggage\n        let currentBaggage = (_a = api_1.propagation.getBaggage(context)) !== null && _a !== void 0 ? _a : api_1.propagation.createBaggage();\n        for (const baggageEntry of baggageValues) {\n            if (baggageEntry.value === undefined)\n                continue;\n            currentBaggage = currentBaggage.setEntry(baggageEntry.key, {\n                value: decodeURIComponent(baggageEntry.value),\n            });\n        }\n        newContext = api_1.propagation.setBaggage(newContext, currentBaggage);\n        return newContext;\n    }\n    fields() {\n        return [this._jaegerTraceHeader];\n    }\n}\nexports.JaegerPropagator = JaegerPropagator;\nconst VALID_HEX_RE = /^[0-9a-f]{1,2}$/i;\n/**\n * @param {string} serializedString - a serialized span context.\n * @return {SpanContext} - returns a span context represented by the serializedString.\n **/\nfunction deserializeSpanContext(serializedString) {\n    const headers = decodeURIComponent(serializedString).split(':');\n    if (headers.length !== 4) {\n        return null;\n    }\n    const [_traceId, _spanId, , flags] = headers;\n    const traceId = _traceId.padStart(32, '0');\n    const spanId = _spanId.padStart(16, '0');\n    const traceFlags = VALID_HEX_RE.test(flags) ? parseInt(flags, 16) & 1 : 1;\n    return { traceId, spanId, isRemote: true, traceFlags };\n}\n//# sourceMappingURL=JaegerPropagator.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UBER_TRACE_ID_HEADER = exports.UBER_BAGGAGE_HEADER_PREFIX = exports.JaegerPropagator = void 0;\nvar JaegerPropagator_1 = require(\"./JaegerPropagator\");\nObject.defineProperty(exports, \"JaegerPropagator\", { enumerable: true, get: function () { return JaegerPropagator_1.JaegerPropagator; } });\nObject.defineProperty(exports, \"UBER_BAGGAGE_HEADER_PREFIX\", { enumerable: true, get: function () { return JaegerPropagator_1.UBER_BAGGAGE_HEADER_PREFIX; } });\nObject.defineProperty(exports, \"UBER_TRACE_ID_HEADER\", { enumerable: true, get: function () { return JaegerPropagator_1.UBER_TRACE_ID_HEADER; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeTracerProvider = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst context_async_hooks_1 = require(\"@opentelemetry/context-async-hooks\");\nconst propagator_b3_1 = require(\"@opentelemetry/propagator-b3\");\nconst sdk_trace_base_1 = require(\"@opentelemetry/sdk-trace-base\");\nconst semver = require(\"semver\");\nconst propagator_jaeger_1 = require(\"@opentelemetry/propagator-jaeger\");\n/**\n * Register this TracerProvider for use with the OpenTelemetry API.\n * Undefined values may be replaced with defaults, and\n * null values will be skipped.\n *\n * @param config Configuration object for SDK registration\n */\nclass NodeTracerProvider extends sdk_trace_base_1.BasicTracerProvider {\n    constructor(config = {}) {\n        super(config);\n    }\n    register(config = {}) {\n        if (config.contextManager === undefined) {\n            const ContextManager = semver.gte(process.version, '14.8.0')\n                ? context_async_hooks_1.AsyncLocalStorageContextManager\n                : context_async_hooks_1.AsyncHooksContextManager;\n            config.contextManager = new ContextManager();\n            config.contextManager.enable();\n        }\n        super.register(config);\n    }\n}\nexports.NodeTracerProvider = NodeTracerProvider;\nNodeTracerProvider._registeredPropagators = new Map([\n    ...sdk_trace_base_1.BasicTracerProvider._registeredPropagators,\n    [\n        'b3',\n        () => new propagator_b3_1.B3Propagator({ injectEncoding: propagator_b3_1.B3InjectEncoding.SINGLE_HEADER }),\n    ],\n    [\n        'b3multi',\n        () => new propagator_b3_1.B3Propagator({ injectEncoding: propagator_b3_1.B3InjectEncoding.MULTI_HEADER }),\n    ],\n    ['jaeger', () => new propagator_jaeger_1.JaegerPropagator()],\n]);\n//# sourceMappingURL=NodeTracerProvider.js.map","\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Tracer = exports.TraceIdRatioBasedSampler = exports.Span = exports.SimpleSpanProcessor = exports.SamplingDecision = exports.RandomIdGenerator = exports.ParentBasedSampler = exports.NoopSpanProcessor = exports.InMemorySpanExporter = exports.ForceFlushState = exports.ConsoleSpanExporter = exports.BatchSpanProcessor = exports.BasicTracerProvider = exports.AlwaysOnSampler = exports.AlwaysOffSampler = exports.NodeTracerProvider = void 0;\nvar NodeTracerProvider_1 = require(\"./NodeTracerProvider\");\nObject.defineProperty(exports, \"NodeTracerProvider\", { enumerable: true, get: function () { return NodeTracerProvider_1.NodeTracerProvider; } });\nvar sdk_trace_base_1 = require(\"@opentelemetry/sdk-trace-base\");\nObject.defineProperty(exports, \"AlwaysOffSampler\", { enumerable: true, get: function () { return sdk_trace_base_1.AlwaysOffSampler; } });\nObject.defineProperty(exports, \"AlwaysOnSampler\", { enumerable: true, get: function () { return sdk_trace_base_1.AlwaysOnSampler; } });\nObject.defineProperty(exports, \"BasicTracerProvider\", { enumerable: true, get: function () { return sdk_trace_base_1.BasicTracerProvider; } });\nObject.defineProperty(exports, \"BatchSpanProcessor\", { enumerable: true, get: function () { return sdk_trace_base_1.BatchSpanProcessor; } });\nObject.defineProperty(exports, \"ConsoleSpanExporter\", { enumerable: true, get: function () { return sdk_trace_base_1.ConsoleSpanExporter; } });\nObject.defineProperty(exports, \"ForceFlushState\", { enumerable: true, get: function () { return sdk_trace_base_1.ForceFlushState; } });\nObject.defineProperty(exports, \"InMemorySpanExporter\", { enumerable: true, get: function () { return sdk_trace_base_1.InMemorySpanExporter; } });\nObject.defineProperty(exports, \"NoopSpanProcessor\", { enumerable: true, get: function () { return sdk_trace_base_1.NoopSpanProcessor; } });\nObject.defineProperty(exports, \"ParentBasedSampler\", { enumerable: true, get: function () { return sdk_trace_base_1.ParentBasedSampler; } });\nObject.defineProperty(exports, \"RandomIdGenerator\", { enumerable: true, get: function () { return sdk_trace_base_1.RandomIdGenerator; } });\nObject.defineProperty(exports, \"SamplingDecision\", { enumerable: true, get: function () { return sdk_trace_base_1.SamplingDecision; } });\nObject.defineProperty(exports, \"SimpleSpanProcessor\", { enumerable: true, get: function () { return sdk_trace_base_1.SimpleSpanProcessor; } });\nObject.defineProperty(exports, \"Span\", { enumerable: true, get: function () { return sdk_trace_base_1.Span; } });\nObject.defineProperty(exports, \"TraceIdRatioBasedSampler\", { enumerable: true, get: function () { return sdk_trace_base_1.TraceIdRatioBasedSampler; } });\nObject.defineProperty(exports, \"Tracer\", { enumerable: true, get: function () { return sdk_trace_base_1.Tracer; } });\n//# sourceMappingURL=index.js.map","{\n  \"name\": \"@use-tusk/drift-node-sdk\",\n  \"version\": \"0.1.14\",\n  \"description\": \"Node.js SDK for Tusk Drift instrumentation and replay\",\n  \"homepage\": \"https://github.com/Use-Tusk/drift-node-sdk\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/Use-Tusk/drift-node-sdk.git\"\n  },\n  \"type\": \"module\",\n  \"files\": [\n    \"dist/**\",\n    \"hook.mjs\"\n  ],\n  \"publishConfig\": {\n    \"access\": \"public\",\n    \"registry\": \"https://registry.npmjs.org/\"\n  },\n  \"main\": \"./dist/index.cjs\",\n  \"module\": \"./dist/index.js\",\n  \"types\": \"./dist/index.d.cts\",\n  \"exports\": {\n    \".\": {\n      \"import\": \"./dist/index.js\",\n      \"require\": \"./dist/index.cjs\"\n    },\n    \"./hook.mjs\": \"./hook.mjs\",\n    \"./package.json\": \"./package.json\"\n  },\n  \"scripts\": {\n    \"prepare\": \"patch-package\",\n    \"build\": \"npm run typecheck && tsdown\",\n    \"build:watch\": \"tsdown --watch\",\n    \"typecheck\": \"tsc --noEmit\",\n    \"clean\": \"rm -rf dist\",\n    \"lint\": \"eslint 'src/**/*.ts'\",\n    \"lint:fix\": \"eslint 'src/**/*.ts' --fix\",\n    \"test\": \"ava --workerThreads false\",\n    \"test:bench\": \"ava --workerThreads false benchmarks/bench/sdk-disabled.bench.ts && ava --workerThreads false benchmarks/bench/sdk-active.bench.ts && ava --workerThreads false benchmarks/bench/sdk-active-with-transforms.bench.ts && tsx benchmarks/compare-benchmarks.ts\",\n    \"test:docker\": \"docker compose -f docker-compose.test.yml up -d --wait\"\n  },\n  \"keywords\": [\n    \"instrumentation\",\n    \"replay\",\n    \"nodejs\",\n    \"typescript\",\n    \"tusk\"\n  ],\n  \"author\": \"\",\n  \"license\": \"Apache-2.0\",\n  \"devDependencies\": {\n    \"@bufbuild/buf\": \"^1.57.0\",\n    \"@grpc/grpc-js\": \"^1.13.4\",\n    \"@grpc/proto-loader\": \"^0.7.15\",\n    \"@opentelemetry/api\": \"1.7.0\",\n    \"@opentelemetry/resources\": \"^1.30.1\",\n    \"@opentelemetry/sdk-trace-node\": \"^1.30.1\",\n    \"@opentelemetry/semantic-conventions\": \"^1.26.0\",\n    \"@protobuf-ts/twirp-transport\": \"^2.11.1\",\n    \"@types/express\": \"^4.17.21\",\n    \"@types/google-protobuf\": \"^3.15.12\",\n    \"@types/js-yaml\": \"^4.0.9\",\n    \"@types/jsonpath\": \"^0.2.4\",\n    \"@types/jsonwebtoken\": \"^9.0.10\",\n    \"@types/node\": \"^20.19.19\",\n    \"@types/pg\": \"^8.15.5\",\n    \"@types/supertest\": \"^6.0.2\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.0.0\",\n    \"@typescript-eslint/parser\": \"^6.0.0\",\n    \"@use-tusk/drift-schemas\": \"^0.1.18\",\n    \"ava\": \"^6.4.1\",\n    \"axios\": \"^1.6.0\",\n    \"eslint\": \"^8.57.1\",\n    \"express\": \"^5.1.0\",\n    \"graphql\": \"^16.9.0\",\n    \"graphql-http\": \"^1.22.0\",\n    \"graphql-request\": \"^6.1.0\",\n    \"ioredis\": \"^5.8.1\",\n    \"jsonwebtoken\": \"^9.0.2\",\n    \"mongodb\": \"^6.0.0\",\n    \"mysql2\": \"^3.15.1\",\n    \"next\": \"^15.5.4\",\n    \"patch-package\": \"^8.0.0\",\n    \"pg\": \"^8.16.3\",\n    \"postgres\": \"^3.4.7\",\n    \"prettier\": \"^3.2.4\",\n    \"supertest\": \"^7.0.0\",\n    \"tinybench\": \"^5.0.1\",\n    \"ts-node\": \"^10.9.2\",\n    \"tsc-alias\": \"^1.8.16\",\n    \"tsdown\": \"^0.15.0\",\n    \"tsx\": \"^4.20.6\",\n    \"typescript\": \"^5.0.0\"\n  },\n  \"dependencies\": {\n    \"import-in-the-middle\": \"^1.14.4\",\n    \"js-yaml\": \"^4.1.0\",\n    \"jsonpath\": \"^1.1.1\",\n    \"require-in-the-middle\": \"^7.0.0\",\n    \"semver\": \"^7.7.2\"\n  },\n  \"engines\": {\n    \"node\": \">=16.0.0\"\n  },\n  \"optionalDependencies\": {\n    \"@rolldown/binding-linux-x64-gnu\": \"^1.0.0-beta.47\"\n  }\n}\n","import { version } from \"../package.json\";\nexport const SDK_VERSION = version;\n// Developer should update this when there are breaking changes to the current CLI\nexport const MIN_CLI_VERSION = \"0.1.0\";\n","import { Struct } from \"./struct-LJz5_MGH.js\";\nimport { Timestamp } from \"./timestamp-CN7C70ih.js\";\nimport { Span } from \"./span-BZ89ct3l.js\";\nimport { ServiceType } from \"@protobuf-ts/runtime-rpc\";\nimport { MessageType, UnknownFieldHandler, WireType, reflectionMergePartial } from \"@protobuf-ts/runtime\";\n\n//#region generated/ts/core/communication.ts\n/**\n* @generated from protobuf enum tusk.drift.core.v1.MessageType\n*/\nlet MessageType$1 = /* @__PURE__ */ function(MessageType$2) {\n\t/**\n\t* @generated from protobuf enum value: MESSAGE_TYPE_UNSPECIFIED = 0;\n\t*/\n\tMessageType$2[MessageType$2[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n\t/**\n\t* @generated from protobuf enum value: MESSAGE_TYPE_SDK_CONNECT = 1;\n\t*/\n\tMessageType$2[MessageType$2[\"SDK_CONNECT\"] = 1] = \"SDK_CONNECT\";\n\t/**\n\t* @generated from protobuf enum value: MESSAGE_TYPE_MOCK_REQUEST = 2;\n\t*/\n\tMessageType$2[MessageType$2[\"MOCK_REQUEST\"] = 2] = \"MOCK_REQUEST\";\n\t/**\n\t* @generated from protobuf enum value: MESSAGE_TYPE_INBOUND_SPAN = 3;\n\t*/\n\tMessageType$2[MessageType$2[\"INBOUND_SPAN\"] = 3] = \"INBOUND_SPAN\";\n\t/**\n\t* @generated from protobuf enum value: MESSAGE_TYPE_ALERT = 4;\n\t*/\n\tMessageType$2[MessageType$2[\"ALERT\"] = 4] = \"ALERT\";\n\t/**\n\t* @generated from protobuf enum value: MESSAGE_TYPE_ENV_VAR_REQUEST = 5;\n\t*/\n\tMessageType$2[MessageType$2[\"ENV_VAR_REQUEST\"] = 5] = \"ENV_VAR_REQUEST\";\n\treturn MessageType$2;\n}({});\nvar ConnectRequest$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"tusk.drift.core.v1.ConnectRequest\", [\n\t\t\t{\n\t\t\t\tno: 1,\n\t\t\t\tname: \"service_id\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 2,\n\t\t\t\tname: \"sdk_version\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 3,\n\t\t\t\tname: \"min_cli_version\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 4,\n\t\t\t\tname: \"metadata\",\n\t\t\t\tkind: \"message\",\n\t\t\t\tT: () => Struct\n\t\t\t}\n\t\t]);\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.serviceId = \"\";\n\t\tmessage.sdkVersion = \"\";\n\t\tmessage.minCliVersion = \"\";\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.serviceId = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tmessage.sdkVersion = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tmessage.minCliVersion = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tmessage.metadata = Struct.internalBinaryRead(reader, reader.uint32(), options, message.metadata);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tif (message.serviceId !== \"\") writer.tag(1, WireType.LengthDelimited).string(message.serviceId);\n\t\tif (message.sdkVersion !== \"\") writer.tag(2, WireType.LengthDelimited).string(message.sdkVersion);\n\t\tif (message.minCliVersion !== \"\") writer.tag(3, WireType.LengthDelimited).string(message.minCliVersion);\n\t\tif (message.metadata) Struct.internalBinaryWrite(message.metadata, writer.tag(4, WireType.LengthDelimited).fork(), options).join();\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message tusk.drift.core.v1.ConnectRequest\n*/\nconst ConnectRequest = new ConnectRequest$Type();\nvar ConnectResponse$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"tusk.drift.core.v1.ConnectResponse\", [{\n\t\t\tno: 1,\n\t\t\tname: \"success\",\n\t\t\tkind: \"scalar\",\n\t\t\tT: 8\n\t\t}, {\n\t\t\tno: 2,\n\t\t\tname: \"error\",\n\t\t\tkind: \"scalar\",\n\t\t\tT: 9\n\t\t}]);\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.success = false;\n\t\tmessage.error = \"\";\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.success = reader.bool();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tmessage.error = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tif (message.success !== false) writer.tag(1, WireType.Varint).bool(message.success);\n\t\tif (message.error !== \"\") writer.tag(2, WireType.LengthDelimited).string(message.error);\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message tusk.drift.core.v1.ConnectResponse\n*/\nconst ConnectResponse = new ConnectResponse$Type();\nvar GetMockRequest$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"tusk.drift.core.v1.GetMockRequest\", [\n\t\t\t{\n\t\t\t\tno: 1,\n\t\t\t\tname: \"request_id\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 2,\n\t\t\t\tname: \"test_id\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 3,\n\t\t\t\tname: \"outbound_span\",\n\t\t\t\tkind: \"message\",\n\t\t\t\tT: () => Span\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 4,\n\t\t\t\tname: \"stack_trace\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 5,\n\t\t\t\tname: \"operation\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 6,\n\t\t\t\tname: \"tags\",\n\t\t\t\tkind: \"map\",\n\t\t\t\tK: 9,\n\t\t\t\tV: {\n\t\t\t\t\tkind: \"scalar\",\n\t\t\t\t\tT: 9\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 7,\n\t\t\t\tname: \"requested_at\",\n\t\t\t\tkind: \"message\",\n\t\t\t\tT: () => Timestamp\n\t\t\t}\n\t\t]);\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.requestId = \"\";\n\t\tmessage.testId = \"\";\n\t\tmessage.stackTrace = \"\";\n\t\tmessage.operation = \"\";\n\t\tmessage.tags = {};\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.requestId = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tmessage.testId = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tmessage.outboundSpan = Span.internalBinaryRead(reader, reader.uint32(), options, message.outboundSpan);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tmessage.stackTrace = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 5:\n\t\t\t\t\tmessage.operation = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 6:\n\t\t\t\t\tthis.binaryReadMap6(message.tags, reader, options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 7:\n\t\t\t\t\tmessage.requestedAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.requestedAt);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tbinaryReadMap6(map, reader, options) {\n\t\tlet len = reader.uint32(), end = reader.pos + len, key, val;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tkey = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tval = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: throw new globalThis.Error(\"unknown map entry field for tusk.drift.core.v1.GetMockRequest.tags\");\n\t\t\t}\n\t\t}\n\t\tmap[key ?? \"\"] = val ?? \"\";\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tif (message.requestId !== \"\") writer.tag(1, WireType.LengthDelimited).string(message.requestId);\n\t\tif (message.testId !== \"\") writer.tag(2, WireType.LengthDelimited).string(message.testId);\n\t\tif (message.outboundSpan) Span.internalBinaryWrite(message.outboundSpan, writer.tag(3, WireType.LengthDelimited).fork(), options).join();\n\t\tif (message.stackTrace !== \"\") writer.tag(4, WireType.LengthDelimited).string(message.stackTrace);\n\t\tif (message.operation !== \"\") writer.tag(5, WireType.LengthDelimited).string(message.operation);\n\t\tfor (let k of globalThis.Object.keys(message.tags)) writer.tag(6, WireType.LengthDelimited).fork().tag(1, WireType.LengthDelimited).string(k).tag(2, WireType.LengthDelimited).string(message.tags[k]).join();\n\t\tif (message.requestedAt) Timestamp.internalBinaryWrite(message.requestedAt, writer.tag(7, WireType.LengthDelimited).fork(), options).join();\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message tusk.drift.core.v1.GetMockRequest\n*/\nconst GetMockRequest = new GetMockRequest$Type();\nvar GetMockResponse$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"tusk.drift.core.v1.GetMockResponse\", [\n\t\t\t{\n\t\t\t\tno: 1,\n\t\t\t\tname: \"request_id\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 2,\n\t\t\t\tname: \"found\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 8\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 3,\n\t\t\t\tname: \"response_data\",\n\t\t\t\tkind: \"message\",\n\t\t\t\tT: () => Struct\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 4,\n\t\t\t\tname: \"metadata\",\n\t\t\t\tkind: \"message\",\n\t\t\t\tT: () => Struct\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 5,\n\t\t\t\tname: \"error\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 6,\n\t\t\t\tname: \"error_code\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 7,\n\t\t\t\tname: \"matched_span_id\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 8,\n\t\t\t\tname: \"matched_at\",\n\t\t\t\tkind: \"message\",\n\t\t\t\tT: () => Timestamp\n\t\t\t}\n\t\t]);\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.requestId = \"\";\n\t\tmessage.found = false;\n\t\tmessage.error = \"\";\n\t\tmessage.errorCode = \"\";\n\t\tmessage.matchedSpanId = \"\";\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.requestId = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tmessage.found = reader.bool();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tmessage.responseData = Struct.internalBinaryRead(reader, reader.uint32(), options, message.responseData);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tmessage.metadata = Struct.internalBinaryRead(reader, reader.uint32(), options, message.metadata);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 5:\n\t\t\t\t\tmessage.error = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 6:\n\t\t\t\t\tmessage.errorCode = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 7:\n\t\t\t\t\tmessage.matchedSpanId = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 8:\n\t\t\t\t\tmessage.matchedAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.matchedAt);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tif (message.requestId !== \"\") writer.tag(1, WireType.LengthDelimited).string(message.requestId);\n\t\tif (message.found !== false) writer.tag(2, WireType.Varint).bool(message.found);\n\t\tif (message.responseData) Struct.internalBinaryWrite(message.responseData, writer.tag(3, WireType.LengthDelimited).fork(), options).join();\n\t\tif (message.metadata) Struct.internalBinaryWrite(message.metadata, writer.tag(4, WireType.LengthDelimited).fork(), options).join();\n\t\tif (message.error !== \"\") writer.tag(5, WireType.LengthDelimited).string(message.error);\n\t\tif (message.errorCode !== \"\") writer.tag(6, WireType.LengthDelimited).string(message.errorCode);\n\t\tif (message.matchedSpanId !== \"\") writer.tag(7, WireType.LengthDelimited).string(message.matchedSpanId);\n\t\tif (message.matchedAt) Timestamp.internalBinaryWrite(message.matchedAt, writer.tag(8, WireType.LengthDelimited).fork(), options).join();\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message tusk.drift.core.v1.GetMockResponse\n*/\nconst GetMockResponse = new GetMockResponse$Type();\nvar SDKMessage$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"tusk.drift.core.v1.SDKMessage\", [\n\t\t\t{\n\t\t\t\tno: 1,\n\t\t\t\tname: \"type\",\n\t\t\t\tkind: \"enum\",\n\t\t\t\tT: () => [\n\t\t\t\t\t\"tusk.drift.core.v1.MessageType\",\n\t\t\t\t\tMessageType$1,\n\t\t\t\t\t\"MESSAGE_TYPE_\"\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 2,\n\t\t\t\tname: \"request_id\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 3,\n\t\t\t\tname: \"connect_request\",\n\t\t\t\tkind: \"message\",\n\t\t\t\toneof: \"payload\",\n\t\t\t\tT: () => ConnectRequest\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 4,\n\t\t\t\tname: \"get_mock_request\",\n\t\t\t\tkind: \"message\",\n\t\t\t\toneof: \"payload\",\n\t\t\t\tT: () => GetMockRequest\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 5,\n\t\t\t\tname: \"send_inbound_span_for_replay_request\",\n\t\t\t\tkind: \"message\",\n\t\t\t\toneof: \"payload\",\n\t\t\t\tT: () => SendInboundSpanForReplayRequest\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 6,\n\t\t\t\tname: \"send_alert_request\",\n\t\t\t\tkind: \"message\",\n\t\t\t\toneof: \"payload\",\n\t\t\t\tT: () => SendAlertRequest\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 7,\n\t\t\t\tname: \"env_var_request\",\n\t\t\t\tkind: \"message\",\n\t\t\t\toneof: \"payload\",\n\t\t\t\tT: () => EnvVarRequest\n\t\t\t}\n\t\t]);\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.type = 0;\n\t\tmessage.requestId = \"\";\n\t\tmessage.payload = { oneofKind: void 0 };\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.type = reader.int32();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tmessage.requestId = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tmessage.payload = {\n\t\t\t\t\t\toneofKind: \"connectRequest\",\n\t\t\t\t\t\tconnectRequest: ConnectRequest.internalBinaryRead(reader, reader.uint32(), options, message.payload.connectRequest)\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tmessage.payload = {\n\t\t\t\t\t\toneofKind: \"getMockRequest\",\n\t\t\t\t\t\tgetMockRequest: GetMockRequest.internalBinaryRead(reader, reader.uint32(), options, message.payload.getMockRequest)\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase 5:\n\t\t\t\t\tmessage.payload = {\n\t\t\t\t\t\toneofKind: \"sendInboundSpanForReplayRequest\",\n\t\t\t\t\t\tsendInboundSpanForReplayRequest: SendInboundSpanForReplayRequest.internalBinaryRead(reader, reader.uint32(), options, message.payload.sendInboundSpanForReplayRequest)\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase 6:\n\t\t\t\t\tmessage.payload = {\n\t\t\t\t\t\toneofKind: \"sendAlertRequest\",\n\t\t\t\t\t\tsendAlertRequest: SendAlertRequest.internalBinaryRead(reader, reader.uint32(), options, message.payload.sendAlertRequest)\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase 7:\n\t\t\t\t\tmessage.payload = {\n\t\t\t\t\t\toneofKind: \"envVarRequest\",\n\t\t\t\t\t\tenvVarRequest: EnvVarRequest.internalBinaryRead(reader, reader.uint32(), options, message.payload.envVarRequest)\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tif (message.type !== 0) writer.tag(1, WireType.Varint).int32(message.type);\n\t\tif (message.requestId !== \"\") writer.tag(2, WireType.LengthDelimited).string(message.requestId);\n\t\tif (message.payload.oneofKind === \"connectRequest\") ConnectRequest.internalBinaryWrite(message.payload.connectRequest, writer.tag(3, WireType.LengthDelimited).fork(), options).join();\n\t\tif (message.payload.oneofKind === \"getMockRequest\") GetMockRequest.internalBinaryWrite(message.payload.getMockRequest, writer.tag(4, WireType.LengthDelimited).fork(), options).join();\n\t\tif (message.payload.oneofKind === \"sendInboundSpanForReplayRequest\") SendInboundSpanForReplayRequest.internalBinaryWrite(message.payload.sendInboundSpanForReplayRequest, writer.tag(5, WireType.LengthDelimited).fork(), options).join();\n\t\tif (message.payload.oneofKind === \"sendAlertRequest\") SendAlertRequest.internalBinaryWrite(message.payload.sendAlertRequest, writer.tag(6, WireType.LengthDelimited).fork(), options).join();\n\t\tif (message.payload.oneofKind === \"envVarRequest\") EnvVarRequest.internalBinaryWrite(message.payload.envVarRequest, writer.tag(7, WireType.LengthDelimited).fork(), options).join();\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message tusk.drift.core.v1.SDKMessage\n*/\nconst SDKMessage = new SDKMessage$Type();\nvar CLIMessage$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"tusk.drift.core.v1.CLIMessage\", [\n\t\t\t{\n\t\t\t\tno: 1,\n\t\t\t\tname: \"type\",\n\t\t\t\tkind: \"enum\",\n\t\t\t\tT: () => [\n\t\t\t\t\t\"tusk.drift.core.v1.MessageType\",\n\t\t\t\t\tMessageType$1,\n\t\t\t\t\t\"MESSAGE_TYPE_\"\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 2,\n\t\t\t\tname: \"request_id\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 3,\n\t\t\t\tname: \"connect_response\",\n\t\t\t\tkind: \"message\",\n\t\t\t\toneof: \"payload\",\n\t\t\t\tT: () => ConnectResponse\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 4,\n\t\t\t\tname: \"get_mock_response\",\n\t\t\t\tkind: \"message\",\n\t\t\t\toneof: \"payload\",\n\t\t\t\tT: () => GetMockResponse\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 5,\n\t\t\t\tname: \"send_inbound_span_for_replay_response\",\n\t\t\t\tkind: \"message\",\n\t\t\t\toneof: \"payload\",\n\t\t\t\tT: () => SendInboundSpanForReplayResponse\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 6,\n\t\t\t\tname: \"env_var_response\",\n\t\t\t\tkind: \"message\",\n\t\t\t\toneof: \"payload\",\n\t\t\t\tT: () => EnvVarResponse\n\t\t\t}\n\t\t]);\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.type = 0;\n\t\tmessage.requestId = \"\";\n\t\tmessage.payload = { oneofKind: void 0 };\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.type = reader.int32();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tmessage.requestId = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tmessage.payload = {\n\t\t\t\t\t\toneofKind: \"connectResponse\",\n\t\t\t\t\t\tconnectResponse: ConnectResponse.internalBinaryRead(reader, reader.uint32(), options, message.payload.connectResponse)\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tmessage.payload = {\n\t\t\t\t\t\toneofKind: \"getMockResponse\",\n\t\t\t\t\t\tgetMockResponse: GetMockResponse.internalBinaryRead(reader, reader.uint32(), options, message.payload.getMockResponse)\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase 5:\n\t\t\t\t\tmessage.payload = {\n\t\t\t\t\t\toneofKind: \"sendInboundSpanForReplayResponse\",\n\t\t\t\t\t\tsendInboundSpanForReplayResponse: SendInboundSpanForReplayResponse.internalBinaryRead(reader, reader.uint32(), options, message.payload.sendInboundSpanForReplayResponse)\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase 6:\n\t\t\t\t\tmessage.payload = {\n\t\t\t\t\t\toneofKind: \"envVarResponse\",\n\t\t\t\t\t\tenvVarResponse: EnvVarResponse.internalBinaryRead(reader, reader.uint32(), options, message.payload.envVarResponse)\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tif (message.type !== 0) writer.tag(1, WireType.Varint).int32(message.type);\n\t\tif (message.requestId !== \"\") writer.tag(2, WireType.LengthDelimited).string(message.requestId);\n\t\tif (message.payload.oneofKind === \"connectResponse\") ConnectResponse.internalBinaryWrite(message.payload.connectResponse, writer.tag(3, WireType.LengthDelimited).fork(), options).join();\n\t\tif (message.payload.oneofKind === \"getMockResponse\") GetMockResponse.internalBinaryWrite(message.payload.getMockResponse, writer.tag(4, WireType.LengthDelimited).fork(), options).join();\n\t\tif (message.payload.oneofKind === \"sendInboundSpanForReplayResponse\") SendInboundSpanForReplayResponse.internalBinaryWrite(message.payload.sendInboundSpanForReplayResponse, writer.tag(5, WireType.LengthDelimited).fork(), options).join();\n\t\tif (message.payload.oneofKind === \"envVarResponse\") EnvVarResponse.internalBinaryWrite(message.payload.envVarResponse, writer.tag(6, WireType.LengthDelimited).fork(), options).join();\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message tusk.drift.core.v1.CLIMessage\n*/\nconst CLIMessage = new CLIMessage$Type();\nvar SendInboundSpanForReplayRequest$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"tusk.drift.core.v1.SendInboundSpanForReplayRequest\", [{\n\t\t\tno: 1,\n\t\t\tname: \"span\",\n\t\t\tkind: \"message\",\n\t\t\tT: () => Span\n\t\t}]);\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.span = Span.internalBinaryRead(reader, reader.uint32(), options, message.span);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tif (message.span) Span.internalBinaryWrite(message.span, writer.tag(1, WireType.LengthDelimited).fork(), options).join();\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message tusk.drift.core.v1.SendInboundSpanForReplayRequest\n*/\nconst SendInboundSpanForReplayRequest = new SendInboundSpanForReplayRequest$Type();\nvar SendInboundSpanForReplayResponse$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"tusk.drift.core.v1.SendInboundSpanForReplayResponse\", [{\n\t\t\tno: 1,\n\t\t\tname: \"success\",\n\t\t\tkind: \"scalar\",\n\t\t\tT: 8\n\t\t}]);\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.success = false;\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.success = reader.bool();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tif (message.success !== false) writer.tag(1, WireType.Varint).bool(message.success);\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message tusk.drift.core.v1.SendInboundSpanForReplayResponse\n*/\nconst SendInboundSpanForReplayResponse = new SendInboundSpanForReplayResponse$Type();\nvar SendAlertRequest$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"tusk.drift.core.v1.SendAlertRequest\", [{\n\t\t\tno: 1,\n\t\t\tname: \"version_mismatch\",\n\t\t\tkind: \"message\",\n\t\t\toneof: \"alert\",\n\t\t\tT: () => InstrumentationVersionMismatchAlert\n\t\t}, {\n\t\t\tno: 2,\n\t\t\tname: \"unpatched_dependency\",\n\t\t\tkind: \"message\",\n\t\t\toneof: \"alert\",\n\t\t\tT: () => UnpatchedDependencyAlert\n\t\t}]);\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.alert = { oneofKind: void 0 };\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.alert = {\n\t\t\t\t\t\toneofKind: \"versionMismatch\",\n\t\t\t\t\t\tversionMismatch: InstrumentationVersionMismatchAlert.internalBinaryRead(reader, reader.uint32(), options, message.alert.versionMismatch)\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tmessage.alert = {\n\t\t\t\t\t\toneofKind: \"unpatchedDependency\",\n\t\t\t\t\t\tunpatchedDependency: UnpatchedDependencyAlert.internalBinaryRead(reader, reader.uint32(), options, message.alert.unpatchedDependency)\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tif (message.alert.oneofKind === \"versionMismatch\") InstrumentationVersionMismatchAlert.internalBinaryWrite(message.alert.versionMismatch, writer.tag(1, WireType.LengthDelimited).fork(), options).join();\n\t\tif (message.alert.oneofKind === \"unpatchedDependency\") UnpatchedDependencyAlert.internalBinaryWrite(message.alert.unpatchedDependency, writer.tag(2, WireType.LengthDelimited).fork(), options).join();\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message tusk.drift.core.v1.SendAlertRequest\n*/\nconst SendAlertRequest = new SendAlertRequest$Type();\nvar InstrumentationVersionMismatchAlert$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"tusk.drift.core.v1.InstrumentationVersionMismatchAlert\", [\n\t\t\t{\n\t\t\t\tno: 1,\n\t\t\t\tname: \"module_name\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 2,\n\t\t\t\tname: \"requested_version\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 3,\n\t\t\t\tname: \"supported_versions\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\trepeat: 2,\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 4,\n\t\t\t\tname: \"sdk_version\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t}\n\t\t]);\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.moduleName = \"\";\n\t\tmessage.requestedVersion = \"\";\n\t\tmessage.supportedVersions = [];\n\t\tmessage.sdkVersion = \"\";\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.moduleName = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tmessage.requestedVersion = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tmessage.supportedVersions.push(reader.string());\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tmessage.sdkVersion = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tif (message.moduleName !== \"\") writer.tag(1, WireType.LengthDelimited).string(message.moduleName);\n\t\tif (message.requestedVersion !== \"\") writer.tag(2, WireType.LengthDelimited).string(message.requestedVersion);\n\t\tfor (let i = 0; i < message.supportedVersions.length; i++) writer.tag(3, WireType.LengthDelimited).string(message.supportedVersions[i]);\n\t\tif (message.sdkVersion !== \"\") writer.tag(4, WireType.LengthDelimited).string(message.sdkVersion);\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message tusk.drift.core.v1.InstrumentationVersionMismatchAlert\n*/\nconst InstrumentationVersionMismatchAlert = new InstrumentationVersionMismatchAlert$Type();\nvar UnpatchedDependencyAlert$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"tusk.drift.core.v1.UnpatchedDependencyAlert\", [\n\t\t\t{\n\t\t\t\tno: 1,\n\t\t\t\tname: \"stack_trace\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 2,\n\t\t\t\tname: \"trace_test_server_span_id\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\tno: 3,\n\t\t\t\tname: \"sdk_version\",\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t}\n\t\t]);\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.stackTrace = \"\";\n\t\tmessage.traceTestServerSpanId = \"\";\n\t\tmessage.sdkVersion = \"\";\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.stackTrace = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tmessage.traceTestServerSpanId = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tmessage.sdkVersion = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tif (message.stackTrace !== \"\") writer.tag(1, WireType.LengthDelimited).string(message.stackTrace);\n\t\tif (message.traceTestServerSpanId !== \"\") writer.tag(2, WireType.LengthDelimited).string(message.traceTestServerSpanId);\n\t\tif (message.sdkVersion !== \"\") writer.tag(3, WireType.LengthDelimited).string(message.sdkVersion);\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message tusk.drift.core.v1.UnpatchedDependencyAlert\n*/\nconst UnpatchedDependencyAlert = new UnpatchedDependencyAlert$Type();\nvar EnvVarRequest$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"tusk.drift.core.v1.EnvVarRequest\", [{\n\t\t\tno: 1,\n\t\t\tname: \"trace_test_server_span_id\",\n\t\t\tkind: \"scalar\",\n\t\t\tT: 9\n\t\t}]);\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.traceTestServerSpanId = \"\";\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tmessage.traceTestServerSpanId = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tif (message.traceTestServerSpanId !== \"\") writer.tag(1, WireType.LengthDelimited).string(message.traceTestServerSpanId);\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message tusk.drift.core.v1.EnvVarRequest\n*/\nconst EnvVarRequest = new EnvVarRequest$Type();\nvar EnvVarResponse$Type = class extends MessageType {\n\tconstructor() {\n\t\tsuper(\"tusk.drift.core.v1.EnvVarResponse\", [{\n\t\t\tno: 1,\n\t\t\tname: \"env_vars\",\n\t\t\tkind: \"map\",\n\t\t\tK: 9,\n\t\t\tV: {\n\t\t\t\tkind: \"scalar\",\n\t\t\t\tT: 9\n\t\t\t}\n\t\t}]);\n\t}\n\tcreate(value) {\n\t\tconst message = globalThis.Object.create(this.messagePrototype);\n\t\tmessage.envVars = {};\n\t\tif (value !== void 0) reflectionMergePartial(this, message, value);\n\t\treturn message;\n\t}\n\tinternalBinaryRead(reader, length, options, target) {\n\t\tlet message = target ?? this.create(), end = reader.pos + length;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tthis.binaryReadMap1(message.envVars, reader, options);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlet u = options.readUnknownField;\n\t\t\t\t\tif (u === \"throw\") throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n\t\t\t\t\tlet d = reader.skip(wireType);\n\t\t\t\t\tif (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n\t\t\t}\n\t\t}\n\t\treturn message;\n\t}\n\tbinaryReadMap1(map, reader, options) {\n\t\tlet len = reader.uint32(), end = reader.pos + len, key, val;\n\t\twhile (reader.pos < end) {\n\t\t\tlet [fieldNo, wireType] = reader.tag();\n\t\t\tswitch (fieldNo) {\n\t\t\t\tcase 1:\n\t\t\t\t\tkey = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tval = reader.string();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: throw new globalThis.Error(\"unknown map entry field for tusk.drift.core.v1.EnvVarResponse.env_vars\");\n\t\t\t}\n\t\t}\n\t\tmap[key ?? \"\"] = val ?? \"\";\n\t}\n\tinternalBinaryWrite(message, writer, options) {\n\t\tfor (let k of globalThis.Object.keys(message.envVars)) writer.tag(1, WireType.LengthDelimited).fork().tag(1, WireType.LengthDelimited).string(k).tag(2, WireType.LengthDelimited).string(message.envVars[k]).join();\n\t\tlet u = options.writeUnknownFields;\n\t\tif (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n\t\treturn writer;\n\t}\n};\n/**\n* @generated MessageType for protobuf message tusk.drift.core.v1.EnvVarResponse\n*/\nconst EnvVarResponse = new EnvVarResponse$Type();\n/**\n* @generated ServiceType for protobuf service tusk.drift.core.v1.MockService\n*/\nconst MockService = new ServiceType(\"tusk.drift.core.v1.MockService\", [\n\t{\n\t\tname: \"Connect\",\n\t\toptions: {},\n\t\tI: ConnectRequest,\n\t\tO: ConnectResponse\n\t},\n\t{\n\t\tname: \"GetMock\",\n\t\toptions: {},\n\t\tI: GetMockRequest,\n\t\tO: GetMockResponse\n\t},\n\t{\n\t\tname: \"SendInboundSpanForReplay\",\n\t\toptions: {},\n\t\tI: SendInboundSpanForReplayRequest,\n\t\tO: SendInboundSpanForReplayResponse\n\t}\n]);\n\n//#endregion\nexport { CLIMessage, ConnectRequest, ConnectResponse, EnvVarRequest, EnvVarResponse, GetMockRequest, GetMockResponse, InstrumentationVersionMismatchAlert, MessageType$1 as MessageType, MockService, SDKMessage, SendAlertRequest, SendInboundSpanForReplayRequest, SendInboundSpanForReplayResponse, UnpatchedDependencyAlert };\n//# sourceMappingURL=communication-D4zqMBSI.js.map","import net from \"net\";\nimport { MIN_CLI_VERSION, SDK_VERSION } from \"../version\";\nimport { execSync } from \"child_process\";\nimport path from \"path\";\nimport os from \"os\";\nimport fs from \"fs\";\nimport {\n  CLIMessage,\n  MessageType,\n  GetMockRequest,\n  GetMockResponse,\n  ConnectRequest,\n  SDKMessage,\n  SendInboundSpanForReplayRequest,\n  SendAlertRequest,\n  InstrumentationVersionMismatchAlert,\n  UnpatchedDependencyAlert,\n  EnvVarRequest,\n} from \"@use-tusk/drift-schemas/core/communication\";\nimport { context, Context, SpanKind as OtSpanKind } from \"@opentelemetry/api\";\nimport { Value } from \"@use-tusk/drift-schemas/google/protobuf/struct\";\nimport { CleanSpanData, CALLING_LIBRARY_CONTEXT_KEY } from \"./types\";\nimport { Span } from \"@use-tusk/drift-schemas/core/span\";\nimport { logger, objectToProtobufStruct, toStruct, mapOtToPb, OriginalGlobalUtils } from \"./utils\";\n\nexport interface MockRequestInput {\n  testId: string;\n  outboundSpan: CleanSpanData;\n}\n\ninterface MockResponseOutput {\n  found: boolean;\n  response?: Record<string, unknown>;\n  error?: string;\n}\n\nexport class ProtobufCommunicator {\n  /**\n   * Shared child process script for synchronous protobuf requests.\n   * This script establishes its own connection to the CLI and handles async socket communication.\n   */\n  private static readonly SYNC_CHILD_SCRIPT = `\nconst net = require('net');\nconst fs = require('fs');\n\nconst requestFile = process.argv[2];\nconst responseFile = process.argv[3];\nconst config = JSON.parse(process.argv[4]);\n\nlet responseReceived = false;\nlet timeoutId;\n\nfunction cleanup(exitCode) {\n  if (timeoutId) clearTimeout(timeoutId);\n  process.exit(exitCode);\n}\n\ntry {\n  // Read the request data\n  const requestData = fs.readFileSync(requestFile);\n\n  // Create connection based on config\n  const client = config.type === 'unix'\n    ? net.createConnection({ path: config.path })\n    : net.createConnection({ host: config.host, port: config.port });\n\n  const incomingChunks = [];\n  let incomingBuffer = Buffer.alloc(0);\n\n  // Set timeout\n  timeoutId = setTimeout(() => {\n    if (!responseReceived) {\n      console.error('Timeout waiting for response');\n      client.destroy();\n      cleanup(1);\n    }\n  }, 10000);\n\n  client.on('connect', () => {\n    // Send the request\n    client.write(requestData);\n  });\n\n  client.on('data', (data) => {\n    incomingBuffer = Buffer.concat([incomingBuffer, data]);\n\n    // Try to parse complete message (4 byte length prefix + message)\n    while (incomingBuffer.length >= 4) {\n      const messageLength = incomingBuffer.readUInt32BE(0);\n\n      if (incomingBuffer.length < 4 + messageLength) {\n        // Incomplete message, wait for more data\n        break;\n      }\n\n      // We have a complete message\n      const messageData = incomingBuffer.slice(4, 4 + messageLength);\n      incomingBuffer = incomingBuffer.slice(4 + messageLength);\n\n      // Write the complete response (including length prefix)\n      const lengthPrefix = Buffer.allocUnsafe(4);\n      lengthPrefix.writeUInt32BE(messageLength, 0);\n      fs.writeFileSync(responseFile, Buffer.concat([lengthPrefix, messageData]));\n\n      responseReceived = true;\n      client.destroy();\n      cleanup(0);\n      break;\n    }\n  });\n\n  client.on('error', (err) => {\n    if (!responseReceived) {\n      console.error('Connection error:', err.message);\n      cleanup(1);\n    }\n  });\n\n  client.on('close', () => {\n    if (!responseReceived) {\n      console.error('Connection closed without response');\n      cleanup(1);\n    }\n  });\n\n} catch (err) {\n  console.error('Script error:', err.message);\n  cleanup(1);\n}\n`;\n\n  private client: net.Socket | null = null;\n  private pendingRequests = new Map<\n    string,\n    {\n      resolve: (response: any) => void;\n      reject: (error: Error) => void;\n    }\n  >();\n  private incomingBuffer = Buffer.alloc(0);\n  // Store the context when connecting and reuse it\n  private protobufContext: Context | null = null;\n\n  private makeConnection(\n    connectionInfo: { socketPath: string } | { host: string; port: number },\n    callback: () => void,\n  ) {\n    const currentContext = context.active();\n    this.protobufContext = currentContext.setValue(\n      CALLING_LIBRARY_CONTEXT_KEY,\n      \"ProtobufCommunicator\",\n    );\n\n    // Create connection in context so TCP instrumentation knows to ignore these TCP calls\n    return context.with(this.protobufContext, () => {\n      if (\"socketPath\" in connectionInfo) {\n        // Unix socket connection\n        this.client = net.createConnection(connectionInfo.socketPath, callback);\n      } else {\n        // TCP connection\n        this.client = net.createConnection(\n          { host: connectionInfo.host, port: connectionInfo.port },\n          callback,\n        );\n      }\n    });\n  }\n\n  async connect(\n    connectionInfo: { socketPath: string } | { host: string; port: number },\n    serviceId: string,\n  ): Promise<void> {\n    return new Promise((resolve, reject) => {\n      this.makeConnection(connectionInfo, () => {\n        const connType = \"socketPath\" in connectionInfo ? \"Unix socket\" : \"TCP\";\n        logger.debug(`Connected to CLI via protobuf (${connType})`);\n        this.sendConnectMessage(serviceId).then(resolve).catch(reject);\n      });\n\n      this.client?.on(\"error\", (err) => {\n        logger.error(\"Connection error:\", err);\n        reject(err);\n      });\n\n      this.client?.on(\"data\", (data) => {\n        this.handleIncomingData(data);\n      });\n\n      this.client?.on(\"timeout\", () => {\n        logger.error(\"Connection timeout\");\n        reject(new Error(\"Connection timeout\"));\n      });\n\n      this.client?.on(\"end\", () => {\n        logger.debug(\"Connection to CLI ended\");\n      });\n\n      this.client?.on(\"close\", () => {\n        logger.debug(\"Connection to CLI closed\");\n        // Reject all pending requests\n        for (const [requestId, { reject }] of this.pendingRequests) {\n          reject(new Error(\"Connection closed before response received\"));\n        }\n        this.pendingRequests.clear();\n      });\n    });\n  }\n\n  private async sendConnectMessage(serviceId: string): Promise<void> {\n    const connectRequest = ConnectRequest.create({\n      serviceId,\n      sdkVersion: SDK_VERSION,\n      minCliVersion: MIN_CLI_VERSION,\n    });\n\n    const sdkMessage = SDKMessage.create({\n      type: MessageType.SDK_CONNECT,\n      requestId: this.generateRequestId(),\n      payload: {\n        oneofKind: \"connectRequest\",\n        connectRequest,\n      },\n    });\n\n    await this.sendProtobufMessage(sdkMessage);\n\n    // SDK awaits CLI's decision\n    // If CLI accepts -> connection proceeds\n    // If CLI rejects -> CLI closes the connection and terminates the service.\n  }\n\n  private getStackTrace(): string {\n    Error.stackTraceLimit = 100;\n    const s = new Error().stack || \"\";\n    Error.stackTraceLimit = 10;\n    return s\n      .split(\"\\n\")\n      .slice(2)\n      .filter((l) => !l.includes(\"ProtobufCommunicator\"))\n      .join(\"\\n\");\n  }\n\n  async requestMockAsync(mockRequest: MockRequestInput): Promise<MockResponseOutput> {\n    const requestId = this.generateRequestId();\n\n    // Clean the input data to remove undefined values\n    const cleanSpan = mockRequest.outboundSpan\n      ? this.cleanSpan(mockRequest.outboundSpan)\n      : undefined;\n\n    // Convert inputValue to protobuf Struct format\n    if (cleanSpan?.inputValue) {\n      cleanSpan.inputValue = objectToProtobufStruct(cleanSpan.inputValue);\n    }\n\n    // Convert kind to protobuf format\n    if (cleanSpan?.kind) {\n      cleanSpan.kind = mapOtToPb(cleanSpan.kind as OtSpanKind);\n    }\n\n    const protoMockRequest = GetMockRequest.create({\n      ...mockRequest,\n      requestId,\n      tags: {},\n      outboundSpan: cleanSpan,\n      stackTrace: cleanSpan?.stackTrace,\n    });\n\n    const sdkMessage: SDKMessage = SDKMessage.create({\n      type: MessageType.MOCK_REQUEST,\n      requestId: requestId,\n      payload: {\n        oneofKind: \"getMockRequest\",\n        getMockRequest: protoMockRequest,\n      },\n    });\n\n    logger.debug(\n      `[ProtobufCommunicator] Creating mock request with requestId: ${requestId}, testId: ${mockRequest.testId}`,\n    );\n\n    return new Promise((resolve, reject) => {\n      this.pendingRequests.set(requestId, { resolve, reject });\n      this.sendProtobufMessage(sdkMessage).catch(reject);\n    });\n  }\n\n  /**\n   * Generic synchronous request handler that spawns a child process.\n   * @param sdkMessage The SDK message to send\n   * @param filePrefix Prefix for temporary files (e.g., 'envvar', 'mock')\n   * @param responseHandler Function to extract and return the desired response\n   */\n  private executeSyncRequest<TResponse>(\n    sdkMessage: SDKMessage,\n    filePrefix: string,\n    responseHandler: (cliMessage: CLIMessage) => TResponse,\n  ): TResponse {\n    const requestId = sdkMessage.requestId;\n\n    // Serialize the message to binary\n    const messageBytes = SDKMessage.toBinary(sdkMessage);\n\n    // Create temporary file paths\n    const tempDir = os.tmpdir();\n    const requestFile = path.join(tempDir, `tusk-sync-${filePrefix}-request-${requestId}.bin`);\n    const responseFile = path.join(tempDir, `tusk-sync-${filePrefix}-response-${requestId}.bin`);\n    const scriptFile = path.join(tempDir, `tusk-sync-${filePrefix}-script-${requestId}.js`);\n\n    try {\n      // Write length prefix (4 bytes big-endian) + message to temp file\n      const lengthBuffer = Buffer.allocUnsafe(4);\n      lengthBuffer.writeUInt32BE(messageBytes.length, 0);\n      const fullMessage = Buffer.concat([lengthBuffer, Buffer.from(messageBytes)]);\n      fs.writeFileSync(requestFile, fullMessage);\n\n      // Determine connection method (Unix socket or TCP)\n      const mockSocket = OriginalGlobalUtils.getOriginalProcessEnvVar(\"TUSK_MOCK_SOCKET\");\n      const mockHost = OriginalGlobalUtils.getOriginalProcessEnvVar(\"TUSK_MOCK_HOST\");\n      const mockPort = OriginalGlobalUtils.getOriginalProcessEnvVar(\"TUSK_MOCK_PORT\");\n\n      let connectionConfig: any;\n      if (mockSocket) {\n        connectionConfig = { type: \"unix\", path: mockSocket };\n      } else if (mockHost && mockPort) {\n        connectionConfig = { type: \"tcp\", host: mockHost, port: parseInt(mockPort, 10) };\n      } else {\n        const socketPath = path.join(os.tmpdir(), \"tusk-connect.sock\");\n        connectionConfig = { type: \"unix\", path: socketPath };\n      }\n\n      // Write the script to a file\n      fs.writeFileSync(scriptFile, ProtobufCommunicator.SYNC_CHILD_SCRIPT);\n\n      try {\n        // Execute the child process synchronously using execSync\n        execSync(\n          `node \"${scriptFile}\" \"${requestFile}\" \"${responseFile}\" '${JSON.stringify(connectionConfig)}'`,\n          {\n            timeout: 12000, // Slightly longer than the child's timeout\n            stdio: \"pipe\",\n          },\n        );\n\n        // Read the response from the file\n        const responseBuffer = fs.readFileSync(responseFile);\n\n        // Parse the response (4 byte length prefix + message)\n        if (responseBuffer.length < 4) {\n          throw new Error(\"Invalid response: too short\");\n        }\n\n        const responseLength = responseBuffer.readUInt32BE(0);\n        if (responseBuffer.length < 4 + responseLength) {\n          throw new Error(\"Invalid response: incomplete message\");\n        }\n\n        const responseData = responseBuffer.slice(4, 4 + responseLength);\n        const cliMessage = CLIMessage.fromBinary(responseData);\n\n        // Use the provided handler to extract the specific response\n        return responseHandler(cliMessage);\n      } catch (error: any) {\n        logger.error(\n          `[ProtobufCommunicator] error in sync ${filePrefix} request child process:`,\n          error,\n        );\n        throw error;\n      }\n    } catch (error: any) {\n      throw new Error(`Sync ${filePrefix} request failed: ${error.message}`);\n    } finally {\n      // Clean up temp files\n      try {\n        if (fs.existsSync(requestFile)) fs.unlinkSync(requestFile);\n      } catch (e) {\n        logger.error(\"[ProtobufCommunicator] error cleaning up request file:\", e);\n      }\n      try {\n        if (fs.existsSync(responseFile)) fs.unlinkSync(responseFile);\n      } catch (e) {\n        logger.error(\"[ProtobufCommunicator] error cleaning up response file:\", e);\n      }\n      try {\n        if (fs.existsSync(scriptFile)) fs.unlinkSync(scriptFile);\n      } catch (e) {\n        logger.error(\"[ProtobufCommunicator] error cleaning up script file:\", e);\n      }\n    }\n  }\n\n  /**\n   * Request environment variables from CLI synchronously using a child process.\n   * This blocks the main thread, so it should be used carefully.\n   * Similar to requestMockSync but for environment variables.\n   */\n  requestEnvVarsSync(traceTestServerSpanId: string): Record<string, string> {\n    const requestId = this.generateRequestId();\n\n    const envVarRequest = EnvVarRequest.create({\n      traceTestServerSpanId,\n    });\n\n    const sdkMessage = SDKMessage.create({\n      type: MessageType.ENV_VAR_REQUEST,\n      requestId: requestId,\n      payload: {\n        oneofKind: \"envVarRequest\",\n        envVarRequest,\n      },\n    });\n\n    logger.debug(\n      `[ProtobufCommunicator] Requesting env vars (sync) for trace: ${traceTestServerSpanId}`,\n    );\n\n    return this.executeSyncRequest(sdkMessage, \"envvar\", (cliMessage) => {\n      if (cliMessage.payload.oneofKind !== \"envVarResponse\") {\n        throw new Error(`Unexpected response type: ${cliMessage.type}`);\n      }\n\n      const envVarResponse = cliMessage.payload.envVarResponse;\n      if (!envVarResponse) {\n        throw new Error(\"No env var response received\");\n      }\n\n      // Convert protobuf map to Record<string, string>\n      const envVars: Record<string, string> = {};\n      if (envVarResponse.envVars) {\n        Object.entries(envVarResponse.envVars).forEach(([key, value]) => {\n          envVars[key] = value;\n        });\n      }\n\n      logger.debug(\n        `[ProtobufCommunicator] Received env vars (sync), count: ${Object.keys(envVars).length}`,\n      );\n      return envVars;\n    });\n  }\n\n  /**\n   * This function uses a separate Node.js child process to communicate with the CLI over a socket.\n   * The child process creates its own connection and event loop, allowing proper async socket handling.\n   * The parent process blocks synchronously waiting for the child to complete.\n   *\n   * Since this function blocks the main thread, there is a performance impact. We should use requestMockAsync whenever possible and only use this function\n   * for instrumentations that require fetching mocks synchronously.\n   */\n  requestMockSync(mockRequest: MockRequestInput): MockResponseOutput {\n    const requestId = this.generateRequestId();\n\n    // Clean the input data to remove undefined values\n    const cleanSpan = mockRequest.outboundSpan\n      ? this.cleanSpan(mockRequest.outboundSpan)\n      : undefined;\n\n    // Convert inputValue to protobuf Struct format\n    if (cleanSpan?.inputValue) {\n      cleanSpan.inputValue = objectToProtobufStruct(cleanSpan.inputValue);\n    }\n\n    // Convert kind to protobuf format\n    if (cleanSpan?.kind) {\n      cleanSpan.kind = mapOtToPb(cleanSpan.kind as OtSpanKind);\n    }\n\n    const protoMockRequest = GetMockRequest.create({\n      ...mockRequest,\n      requestId,\n      tags: {},\n      outboundSpan: cleanSpan,\n      stackTrace: cleanSpan?.stackTrace,\n    });\n\n    const sdkMessage = SDKMessage.create({\n      type: MessageType.MOCK_REQUEST,\n      requestId: requestId,\n      payload: {\n        oneofKind: \"getMockRequest\",\n        getMockRequest: protoMockRequest,\n      },\n    });\n\n    logger.debug(\"Sending protobuf request to CLI (sync)\", {\n      outboundSpan: mockRequest.outboundSpan,\n      testId: mockRequest.testId,\n    });\n\n    return this.executeSyncRequest(sdkMessage, \"mock\", (cliMessage) => {\n      if (cliMessage.payload.oneofKind !== \"getMockResponse\") {\n        throw new Error(`Unexpected response type: ${cliMessage.type}`);\n      }\n\n      const mockResponse = cliMessage.payload.getMockResponse;\n      if (!mockResponse) {\n        throw new Error(\"No mock response received\");\n      }\n\n      if (mockResponse.found) {\n        try {\n          const responseData = this.extractResponseData(mockResponse);\n          return {\n            found: true,\n            response: responseData,\n          };\n        } catch (error) {\n          throw new Error(`Failed to extract response data: ${error}`);\n        }\n      } else {\n        return {\n          found: false,\n          error: mockResponse.error || \"Mock not found\",\n        };\n      }\n    });\n  }\n\n  private async sendProtobufMessage(message: SDKMessage): Promise<void> {\n    if (!this.client || !this.protobufContext) {\n      throw new Error(\"Not connected to CLI\");\n    }\n\n    const messageBytes = SDKMessage.toBinary(message);\n    const lengthBuffer = Buffer.allocUnsafe(4);\n    lengthBuffer.writeUInt32BE(messageBytes.length, 0);\n\n    // Send message in context so TCP instrumentation knows to ignore these TCP calls\n    context.with(this.protobufContext, () => {\n      this.client!.write(lengthBuffer);\n      this.client!.write(Buffer.from(messageBytes));\n    });\n  }\n\n  async sendInboundSpanForReplay(span: CleanSpanData): Promise<void> {\n    if (!this.client) return;\n\n    const pbSpan = Span.create({\n      traceId: span.traceId,\n      spanId: span.spanId,\n      parentSpanId: span.parentSpanId || \"\",\n      name: span.name || \"\",\n      packageName: span.packageName,\n      instrumentationName: span.instrumentationName,\n      submoduleName: span.submoduleName || \"\",\n      inputValue: toStruct(span.inputValue),\n      outputValue: toStruct(span.outputValue),\n      inputSchema: span.inputSchema,\n      outputSchema: span.outputSchema,\n      inputSchemaHash: span.inputSchemaHash || \"\",\n      outputSchemaHash: span.outputSchemaHash || \"\",\n      inputValueHash: span.inputValueHash || \"\",\n      outputValueHash: span.outputValueHash || \"\",\n      kind: mapOtToPb(span.kind as OtSpanKind),\n      status: { code: span.status.code, message: span.status.message || \"\" },\n      timestamp: span.timestamp\n        ? { seconds: BigInt(span.timestamp.seconds), nanos: span.timestamp.nanos }\n        : undefined,\n      isRootSpan: span.isRootSpan ?? false,\n      metadata: toStruct(span.metadata),\n      packageType: span.packageType,\n    });\n\n    const req = SendInboundSpanForReplayRequest.create({ span: pbSpan });\n\n    const sdkMessage = SDKMessage.create({\n      type: MessageType.INBOUND_SPAN,\n      requestId: this.generateRequestId(),\n      payload: {\n        oneofKind: \"sendInboundSpanForReplayRequest\",\n        sendInboundSpanForReplayRequest: req,\n      },\n    });\n\n    await this.sendProtobufMessage(sdkMessage);\n  }\n\n  /**\n   * Send an alert to the CLI (fire-and-forget, no response expected)\n   */\n  private async sendAlert(alert: SendAlertRequest): Promise<void> {\n    if (!this.client || !this.protobufContext) {\n      logger.debug(\"[ProtobufCommunicator] Not connected to CLI, skipping alert\");\n      return;\n    }\n\n    const sdkMessage = SDKMessage.create({\n      type: MessageType.ALERT,\n      requestId: this.generateRequestId(),\n      payload: {\n        oneofKind: \"sendAlertRequest\",\n        sendAlertRequest: alert,\n      },\n    });\n\n    // Fire-and-forget - don't wait for response\n    try {\n      await this.sendProtobufMessage(sdkMessage);\n      logger.debug(\"[ProtobufCommunicator] Alert sent to CLI\");\n    } catch (error) {\n      logger.debug(\"[ProtobufCommunicator] Failed to send alert to CLI:\", error);\n      // Swallow error - alerts are non-critical\n    }\n  }\n\n  /**\n   * Send instrumentation version mismatch alert to CLI\n   */\n  async sendInstrumentationVersionMismatchAlert(params: {\n    moduleName: string;\n    requestedVersion: string | undefined;\n    supportedVersions: string[];\n  }): Promise<void> {\n    const alert = SendAlertRequest.create({\n      alert: {\n        oneofKind: \"versionMismatch\",\n        versionMismatch: InstrumentationVersionMismatchAlert.create({\n          moduleName: params.moduleName,\n          requestedVersion: params.requestedVersion || \"\",\n          supportedVersions: params.supportedVersions,\n          sdkVersion: SDK_VERSION,\n        }),\n      },\n    });\n    await this.sendAlert(alert);\n  }\n\n  /**\n   * Send unpatched dependency alert to CLI\n   */\n  async sendUnpatchedDependencyAlert(params: {\n    stackTrace: string;\n    traceTestServerSpanId: string;\n  }): Promise<void> {\n    const alert = SendAlertRequest.create({\n      alert: {\n        oneofKind: \"unpatchedDependency\",\n        unpatchedDependency: UnpatchedDependencyAlert.create({\n          stackTrace: params.stackTrace,\n          traceTestServerSpanId: params.traceTestServerSpanId,\n          sdkVersion: SDK_VERSION,\n        }),\n      },\n    });\n    await this.sendAlert(alert);\n  }\n\n  private handleIncomingData(data: Buffer): void {\n    this.incomingBuffer = Buffer.concat([this.incomingBuffer, data]);\n    logger.debug(`[ProtobufCommunicator] Processing buffer, length: ${this.incomingBuffer.length}`);\n\n    while (this.incomingBuffer.length >= 4) {\n      const messageLength = this.incomingBuffer.readUInt32BE(0);\n      logger.debug(\n        `[ProtobufCommunicator] Message length from prefix: ${messageLength}, buffer has: ${this.incomingBuffer.length - 4}`,\n      );\n\n      if (this.incomingBuffer.length < 4 + messageLength) {\n        logger.debug(\n          `[ProtobufCommunicator] Incomplete message, waiting for more data. Need ${4 + messageLength}, have ${this.incomingBuffer.length}`,\n        );\n        break;\n      }\n\n      const messageData = this.incomingBuffer.slice(4, 4 + messageLength);\n      this.incomingBuffer = this.incomingBuffer.slice(4 + messageLength);\n\n      try {\n        const cliMessage = CLIMessage.fromBinary(messageData);\n        logger.debug(\n          `[ProtobufCommunicator] Parsed CLI message type: ${cliMessage.type}, requestId: ${cliMessage.requestId}`,\n        );\n        this.handleCLIMessage(cliMessage);\n      } catch (error) {\n        logger.error(\"[ProtobufCommunicator] failed to parse CLI message:\", error);\n      }\n    }\n  }\n\n  private handleCLIMessage(message: CLIMessage): void {\n    const requestId = message.requestId;\n\n    logger.debug(\n      `[ProtobufCommunicator] Received CLI message for requestId: ${requestId}, pending requests:`,\n      Array.from(this.pendingRequests.keys()),\n    );\n\n    if (message.payload.oneofKind === \"connectResponse\") {\n      const connectResponse = message.payload.connectResponse;\n      if (connectResponse?.success) {\n        logger.debug(\"[ProtobufCommunicator] CLI acknowledged connection\");\n      } else {\n        logger.error(\"[ProtobufCommunicator] CLI rejected connection:\", connectResponse?.error);\n      }\n      return;\n    }\n\n    if (message.payload.oneofKind === \"getMockResponse\") {\n      const mockResponse = message.payload.getMockResponse;\n      logger.debug(\n        `[ProtobufCommunicator] Received mock response for requestId: ${requestId}, pending requests:`,\n        Array.from(this.pendingRequests.keys()),\n      );\n      const pendingRequest = this.pendingRequests.get(requestId);\n\n      if (!pendingRequest) {\n        logger.warn(\n          \"[ProtobufCommunicator] received response for unknown request:\",\n          requestId,\n          \"Available pending requests:\",\n          Array.from(this.pendingRequests.keys()),\n        );\n        return;\n      }\n\n      this.pendingRequests.delete(requestId);\n\n      if (!mockResponse) {\n        pendingRequest.reject(new Error(\"No mock response received\"));\n        return;\n      }\n\n      if (mockResponse.found) {\n        try {\n          const responseData = this.extractResponseData(mockResponse);\n          pendingRequest.resolve({\n            found: true,\n            response: responseData,\n          });\n        } catch (error) {\n          pendingRequest.reject(new Error(`Failed to extract response data: ${error}`));\n        }\n      } else {\n        pendingRequest.resolve({\n          found: false,\n          error: mockResponse.error || \"Mock not found\",\n        });\n      }\n    }\n\n    if (message.payload.oneofKind === \"envVarResponse\") {\n      const envVarResponse = message.payload.envVarResponse;\n      logger.debug(`[ProtobufCommunicator] Received env var response for requestId: ${requestId}`);\n      const pendingRequest = this.pendingRequests.get(requestId);\n\n      if (!pendingRequest) {\n        logger.warn(\n          \"[ProtobufCommunicator] received env var response for unknown request:\",\n          requestId,\n        );\n        return;\n      }\n\n      this.pendingRequests.delete(requestId);\n\n      // Convert protobuf map to Record<string, string>\n      const envVars: Record<string, string> = {};\n      if (envVarResponse?.envVars) {\n        Object.entries(envVarResponse.envVars).forEach(([key, value]) => {\n          envVars[key] = value;\n        });\n      }\n\n      pendingRequest.resolve(envVars);\n      return;\n    }\n  }\n\n  /**\n   * Extract response data from MockResponse\n   */\n  private extractResponseData(mockResponse: GetMockResponse): Record<string, unknown> {\n    if (!mockResponse.responseData) {\n      return {};\n    }\n\n    try {\n      const struct = mockResponse.responseData;\n\n      logger.debug(\"[ProtobufCommunicator] extracting response data directly from protobuf\");\n\n      if (struct.fields && struct.fields[\"response\"]) {\n        const responseValue = Value.toJson(struct.fields[\"response\"]);\n        if (responseValue) {\n          logger.debug(\n            \"[ProtobufCommunicator] Extracted response data:\",\n            JSON.stringify(responseValue, null, 2),\n          );\n          return responseValue as Record<string, unknown>;\n        }\n      }\n\n      return {};\n    } catch (error) {\n      logger.error(\"[ProtobufCommunicator] failed to extract response data:\", error);\n      throw error;\n    }\n  }\n\n  private generateRequestId(): string {\n    return Math.random().toString(36).slice(2, 11);\n  }\n\n  private cleanSpan(data: any): any {\n    if (data === null || data === undefined) {\n      return null;\n    }\n\n    if (Array.isArray(data)) {\n      return data.map((item) => this.cleanSpan(item)).filter((item) => item !== undefined);\n    }\n\n    if (typeof data === \"object\") {\n      const cleaned: any = {};\n      for (const [key, value] of Object.entries(data)) {\n        if (value !== undefined) {\n          cleaned[key] = this.cleanSpan(value);\n        }\n      }\n      return cleaned;\n    }\n\n    return data;\n  }\n\n  disconnect(): void {\n    if (this.client) {\n      this.client.destroy();\n      this.client = null;\n    }\n  }\n}\n","export const TuskDriftInstrumentationModuleNames = [\n  \"http\",\n  \"https\",\n  \"pg\",\n  \"postgres\",\n  \"node-fetch\",\n  \"graphql\",\n  \"jsonwebtoken\",\n  \"jwks-rsa\",\n  \"mysql2\",\n  \"ioredis\",\n  \"@upstash/redis\",\n  \"@grpc/grpc-js\",\n  \"@prisma/client\",\n  \"@google-cloud/firestore\",\n  // Note: \"next\" is intentionally excluded from this list because Next.js is always\n  // required before SDK initialization in Next.js apps.\n  // Our Next.js instrumentation handles this case correctly by patching at runtime\n  // rather than relying on require-in-the-middle hooks.\n];\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n/**\n * ASP.NET Core exception middleware handling result.\n *\n * @example handled\n * @example unhandled\n */\nexport const ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT = 'aspnetcore.diagnostics.exception.result';\n/**\n * Enum value \"aborted\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception handling didn't run because the request was aborted.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED = \"aborted\";\n/**\n * Enum value \"handled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception was handled by the exception handling middleware.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED = \"handled\";\n/**\n * Enum value \"skipped\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception handling was skipped because the response had started.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED = \"skipped\";\n/**\n * Enum value \"unhandled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception was not handled by the exception handling middleware.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED = \"unhandled\";\n/**\n * Full type name of the [`IExceptionHandler`](https://learn.microsoft.com/dotnet/api/microsoft.aspnetcore.diagnostics.iexceptionhandler) implementation that handled the exception.\n *\n * @example Contoso.MyHandler\n */\nexport const ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE = 'aspnetcore.diagnostics.handler.type';\n/**\n * Rate limiting policy name.\n *\n * @example fixed\n * @example sliding\n * @example token\n */\nexport const ATTR_ASPNETCORE_RATE_LIMITING_POLICY = 'aspnetcore.rate_limiting.policy';\n/**\n * Rate-limiting result, shows whether the lease was acquired or contains a rejection reason\n *\n * @example acquired\n * @example request_canceled\n */\nexport const ATTR_ASPNETCORE_RATE_LIMITING_RESULT = 'aspnetcore.rate_limiting.result';\n/**\n * Enum value \"acquired\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease was acquired\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED = \"acquired\";\n/**\n * Enum value \"endpoint_limiter\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was rejected by the endpoint limiter\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER = \"endpoint_limiter\";\n/**\n * Enum value \"global_limiter\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was rejected by the global limiter\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER = \"global_limiter\";\n/**\n * Enum value \"request_canceled\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was canceled\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED = \"request_canceled\";\n/**\n * Flag indicating if request was handled by the application pipeline.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED = 'aspnetcore.request.is_unhandled';\n/**\n * A value that indicates whether the matched route is a fallback route.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_ROUTING_IS_FALLBACK = 'aspnetcore.routing.is_fallback';\n/**\n * Match result - success or failure\n *\n * @example success\n * @example failure\n */\nexport const ATTR_ASPNETCORE_ROUTING_MATCH_STATUS = 'aspnetcore.routing.match_status';\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n *\n * Match failed\n */\nexport const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE = \"failure\";\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n *\n * Match succeeded\n */\nexport const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS = \"success\";\n/**\n * A value that indicates whether the user is authenticated.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_USER_IS_AUTHENTICATED = 'aspnetcore.user.is_authenticated';\n/**\n * Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example client.example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the server side, and when communicating through an intermediary, `client.address` **SHOULD** represent the client address behind any intermediaries,  for example proxies, if it's available.\n */\nexport const ATTR_CLIENT_ADDRESS = 'client.address';\n/**\n * Client port number.\n *\n * @example 65123\n *\n * @note When observed from the server side, and when communicating through an intermediary, `client.port` **SHOULD** represent the client port behind any intermediaries,  for example proxies, if it's available.\n */\nexport const ATTR_CLIENT_PORT = 'client.port';\n/**\n * The column number in `code.file.path` best representing the operation. It **SHOULD** point within the code unit named in `code.function.name`. This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Line'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example 16\n */\nexport const ATTR_CODE_COLUMN_NUMBER = 'code.column.number';\n/**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path). This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Function'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example \"/usr/local/MyApplication/content_root/app/index.php\"\n */\nexport const ATTR_CODE_FILE_PATH = 'code.file.path';\n/**\n * The method or function fully-qualified name without arguments. The value should fit the natural representation of the language runtime, which is also likely the same used within `code.stacktrace` attribute value. This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Function'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example com.example.MyHttpService.serveRequest\n * @example GuzzleHttp\\\\Client::transfer\n * @example fopen\n *\n * @note Values and format depends on each language runtime, thus it is impossible to provide an exhaustive list of examples.\n * The values are usually the same (or prefixes of) the ones found in native stack trace representation stored in\n * `code.stacktrace` without information on arguments.\n *\n * Examples:\n *\n *   - Java method: `com.example.MyHttpService.serveRequest`\n *   - Java anonymous class method: `com.mycompany.Main$1.myMethod`\n *   - Java lambda method: `com.mycompany.Main$$Lambda/0x0000748ae4149c00.myMethod`\n *   - PHP function: `GuzzleHttp\\Client::transfer`\n *   - Go function: `github.com/my/repo/pkg.foo.func5`\n *   - Elixir: `OpenTelemetry.Ctx.new`\n *   - Erlang: `opentelemetry_ctx:new`\n *   - Rust: `playground::my_module::my_cool_func`\n *   - C function: `fopen`\n */\nexport const ATTR_CODE_FUNCTION_NAME = 'code.function.name';\n/**\n * The line number in `code.file.path` best representing the operation. It **SHOULD** point within the code unit named in `code.function.name`. This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Line'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example 42\n */\nexport const ATTR_CODE_LINE_NUMBER = 'code.line.number';\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is identical to [`exception.stacktrace`](/docs/exceptions/exceptions-spans.md#stacktrace-representation). This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Location'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example \"at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\\\\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\\\\n at com.example.GenerateTrace.main(GenerateTrace.java:5)\\\\n\"\n */\nexport const ATTR_CODE_STACKTRACE = 'code.stacktrace';\n/**\n * The name of a collection (table, container) within the database.\n *\n * @example public.users\n * @example customers\n *\n * @note It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * The collection name **SHOULD NOT** be extracted from `db.query.text`,\n * when the database system supports query text with multiple collections\n * in non-batch operations.\n *\n * For batch operations, if the individual operations are known to have the same\n * collection name then that collection name **SHOULD** be used.\n */\nexport const ATTR_DB_COLLECTION_NAME = 'db.collection.name';\n/**\n * The name of the database, fully qualified within the server address and port.\n *\n * @example customers\n * @example test.users\n *\n * @note If a database system has multiple namespace components, they **SHOULD** be concatenated from the most general to the most specific namespace component, using `|` as a separator between the components. Any missing components (and their associated separators) **SHOULD** be omitted.\n * Semantic conventions for individual database systems **SHOULD** document what `db.namespace` means in the context of that system.\n * It is **RECOMMENDED** to capture the value as provided by the application without attempting to do any case normalization.\n */\nexport const ATTR_DB_NAMESPACE = 'db.namespace';\n/**\n * The number of queries included in a batch operation.\n *\n * @example 2\n * @example 3\n * @example 4\n *\n * @note Operations are only considered batches when they contain two or more operations, and so `db.operation.batch.size` **SHOULD** never be `1`.\n */\nexport const ATTR_DB_OPERATION_BATCH_SIZE = 'db.operation.batch.size';\n/**\n * The name of the operation or command being executed.\n *\n * @example findAndModify\n * @example HMSET\n * @example SELECT\n *\n * @note It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * The operation name **SHOULD NOT** be extracted from `db.query.text`,\n * when the database system supports query text with multiple operations\n * in non-batch operations.\n *\n * If spaces can occur in the operation name, multiple consecutive spaces\n * **SHOULD** be normalized to a single space.\n *\n * For batch operations, if the individual operations are known to have the same operation name\n * then that operation name **SHOULD** be used prepended by `BATCH `,\n * otherwise `db.operation.name` **SHOULD** be `BATCH` or some other database\n * system specific term if more applicable.\n */\nexport const ATTR_DB_OPERATION_NAME = 'db.operation.name';\n/**\n * Low cardinality summary of a database query.\n *\n * @example SELECT wuser_table\n * @example INSERT shipping_details SELECT orders\n * @example get user by id\n *\n * @note The query summary describes a class of database queries and is useful\n * as a grouping key, especially when analyzing telemetry for database\n * calls involving complex queries.\n *\n * Summary may be available to the instrumentation through\n * instrumentation hooks or other means. If it is not available, instrumentations\n * that support query parsing **SHOULD** generate a summary following\n * [Generating query summary](/docs/database/database-spans.md#generating-a-summary-of-the-query)\n * section.\n */\nexport const ATTR_DB_QUERY_SUMMARY = 'db.query.summary';\n/**\n * The database query being executed.\n *\n * @example SELECT * FROM wuser_table where username = ?\n * @example SET mykey ?\n *\n * @note For sanitization see [Sanitization of `db.query.text`](/docs/database/database-spans.md#sanitization-of-dbquerytext).\n * For batch operations, if the individual operations are known to have the same query text then that query text **SHOULD** be used, otherwise all of the individual query texts **SHOULD** be concatenated with separator `; ` or some other database system specific separator if more applicable.\n * Parameterized query text **SHOULD NOT** be sanitized. Even though parameterized query text can potentially have sensitive data, by using a parameterized query the user is giving a strong signal that any sensitive data will be passed as parameter values, and the benefit to observability of capturing the static part of the query text by default outweighs the risk.\n */\nexport const ATTR_DB_QUERY_TEXT = 'db.query.text';\n/**\n * Database response status code.\n *\n * @example 102\n * @example ORA-17002\n * @example 08P01\n * @example 404\n *\n * @note The status code returned by the database. Usually it represents an error code, but may also represent partial success, warning, or differentiate between various types of successful outcomes.\n * Semantic conventions for individual database systems **SHOULD** document what `db.response.status_code` means in the context of that system.\n */\nexport const ATTR_DB_RESPONSE_STATUS_CODE = 'db.response.status_code';\n/**\n * The name of a stored procedure within the database.\n *\n * @example GetCustomer\n *\n * @note It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * For batch operations, if the individual operations are known to have the same\n * stored procedure name then that stored procedure name **SHOULD** be used.\n */\nexport const ATTR_DB_STORED_PROCEDURE_NAME = 'db.stored_procedure.name';\n/**\n * The database management system (DBMS) product as identified by the client instrumentation.\n *\n * @note The actual DBMS may differ from the one identified by the client. For example, when using PostgreSQL client libraries to connect to a CockroachDB, the `db.system.name` is set to `postgresql` based on the instrumentation's best knowledge.\n */\nexport const ATTR_DB_SYSTEM_NAME = 'db.system.name';\n/**\n * Enum value \"mariadb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MariaDB](https://mariadb.org/)\n */\nexport const DB_SYSTEM_NAME_VALUE_MARIADB = \"mariadb\";\n/**\n * Enum value \"microsoft.sql_server\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Microsoft SQL Server](https://www.microsoft.com/sql-server)\n */\nexport const DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER = \"microsoft.sql_server\";\n/**\n * Enum value \"mysql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MySQL](https://www.mysql.com/)\n */\nexport const DB_SYSTEM_NAME_VALUE_MYSQL = \"mysql\";\n/**\n * Enum value \"postgresql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [PostgreSQL](https://www.postgresql.org/)\n */\nexport const DB_SYSTEM_NAME_VALUE_POSTGRESQL = \"postgresql\";\n/**\n * Name of the garbage collector managed heap generation.\n *\n * @example gen0\n * @example gen1\n * @example gen2\n */\nexport const ATTR_DOTNET_GC_HEAP_GENERATION = 'dotnet.gc.heap.generation';\n/**\n * Enum value \"gen0\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 0\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN0 = \"gen0\";\n/**\n * Enum value \"gen1\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 1\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN1 = \"gen1\";\n/**\n * Enum value \"gen2\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 2\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN2 = \"gen2\";\n/**\n * Enum value \"loh\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Large Object Heap\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_LOH = \"loh\";\n/**\n * Enum value \"poh\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Pinned Object Heap\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_POH = \"poh\";\n/**\n * Describes a class of error the operation ended with.\n *\n * @example timeout\n * @example java.net.UnknownHostException\n * @example server_certificate_invalid\n * @example 500\n *\n * @note The `error.type` **SHOULD** be predictable, and **SHOULD** have low cardinality.\n *\n * When `error.type` is set to a type (e.g., an exception type), its\n * canonical class name identifying the type within the artifact **SHOULD** be used.\n *\n * Instrumentations **SHOULD** document the list of errors they report.\n *\n * The cardinality of `error.type` within one instrumentation library **SHOULD** be low.\n * Telemetry consumers that aggregate data from multiple instrumentation libraries and applications\n * should be prepared for `error.type` to have high cardinality at query time when no\n * additional filters are applied.\n *\n * If the operation has completed successfully, instrumentations **SHOULD NOT** set `error.type`.\n *\n * If a specific domain defines its own set of error identifiers (such as HTTP or gRPC status codes),\n * it's **RECOMMENDED** to:\n *\n *   - Use a domain-specific attribute\n *   - Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not.\n */\nexport const ATTR_ERROR_TYPE = 'error.type';\n/**\n * Enum value \"_OTHER\" for attribute {@link ATTR_ERROR_TYPE}.\n *\n * A fallback error value to be used when the instrumentation doesn't define a custom value.\n */\nexport const ERROR_TYPE_VALUE_OTHER = \"_OTHER\";\n/**\n * Indicates that the exception is escaping the scope of the span.\n *\n * @deprecated It's no longer recommended to record exceptions that are handled and do not escape the scope of a span.\n */\nexport const ATTR_EXCEPTION_ESCAPED = 'exception.escaped';\n/**\n * The exception message.\n *\n * @example Division by zero\n * @example Can't convert 'int' object to str implicitly\n */\nexport const ATTR_EXCEPTION_MESSAGE = 'exception.message';\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n *\n * @example \"Exception in thread \"main\" java.lang.RuntimeException: Test exception\\\\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\\\\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\\\\n at com.example.GenerateTrace.main(GenerateTrace.java:5)\\\\n\"\n */\nexport const ATTR_EXCEPTION_STACKTRACE = 'exception.stacktrace';\n/**\n * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n *\n * @example java.net.ConnectException\n * @example OSError\n */\nexport const ATTR_EXCEPTION_TYPE = 'exception.type';\n/**\n * HTTP request headers, `<key>` being the normalized HTTP Header name (lowercase), the value being the header values.\n *\n * @example [\"application/json\"]\n * @example [\"1.2.3.4\", \"1.2.3.5\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured.\n * Including all request headers can be a security risk - explicit configuration helps avoid leaking sensitive information.\n *\n * The `User-Agent` header is already captured in the `user_agent.original` attribute.\n * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended.\n *\n * The attribute value **MUST** consist of either multiple header values as an array of strings\n * or a single-item array containing a possibly comma-concatenated string, depending on the way\n * the HTTP library provides access to headers.\n *\n * Examples:\n *\n *   - A header `Content-Type: application/json` **SHOULD** be recorded as the `http.request.header.content-type`\n *     attribute with value `[\"application/json\"]`.\n *   - A header `X-Forwarded-For: 1.2.3.4, 1.2.3.5` **SHOULD** be recorded as the `http.request.header.x-forwarded-for`\n *     attribute with value `[\"1.2.3.4\", \"1.2.3.5\"]` or `[\"1.2.3.4, 1.2.3.5\"]` depending on the HTTP library.\n */\nexport const ATTR_HTTP_REQUEST_HEADER = (key) => `http.request.header.${key}`;\n/**\n * HTTP request method.\n *\n * @example GET\n * @example POST\n * @example HEAD\n *\n * @note HTTP request method value **SHOULD** be \"known\" to the instrumentation.\n * By default, this convention defines \"known\" methods as the ones listed in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods),\n * the PATCH method defined in [RFC5789](https://www.rfc-editor.org/rfc/rfc5789.html)\n * and the QUERY method defined in [httpbis-safe-method-w-body](https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body/?include_text=1).\n *\n * If the HTTP request method is not known to instrumentation, it **MUST** set the `http.request.method` attribute to `_OTHER`.\n *\n * If the HTTP instrumentation could end up converting valid HTTP request methods to `_OTHER`, then it **MUST** provide a way to override\n * the list of known HTTP methods. If this override is done via environment variable, then the environment variable **MUST** be named\n * OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated list of case-sensitive known HTTP methods\n * (this list **MUST** be a full override of the default known method, it is not a list of known methods in addition to the defaults).\n *\n * HTTP method names are case-sensitive and `http.request.method` attribute value **MUST** match a known HTTP method name exactly.\n * Instrumentations for specific web frameworks that consider HTTP methods to be case insensitive, **SHOULD** populate a canonical equivalent.\n * Tracing instrumentations that do so, **MUST** also set `http.request.method_original` to the original value.\n */\nexport const ATTR_HTTP_REQUEST_METHOD = 'http.request.method';\n/**\n * Enum value \"_OTHER\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * Any HTTP method that the instrumentation has no prior knowledge of.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_OTHER = \"_OTHER\";\n/**\n * Enum value \"CONNECT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * CONNECT method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_CONNECT = \"CONNECT\";\n/**\n * Enum value \"DELETE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * DELETE method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_DELETE = \"DELETE\";\n/**\n * Enum value \"GET\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * GET method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_GET = \"GET\";\n/**\n * Enum value \"HEAD\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * HEAD method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_HEAD = \"HEAD\";\n/**\n * Enum value \"OPTIONS\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * OPTIONS method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_OPTIONS = \"OPTIONS\";\n/**\n * Enum value \"PATCH\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * PATCH method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_PATCH = \"PATCH\";\n/**\n * Enum value \"POST\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * POST method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_POST = \"POST\";\n/**\n * Enum value \"PUT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * PUT method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_PUT = \"PUT\";\n/**\n * Enum value \"TRACE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * TRACE method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_TRACE = \"TRACE\";\n/**\n * Original HTTP method sent by the client in the request line.\n *\n * @example GeT\n * @example ACL\n * @example foo\n */\nexport const ATTR_HTTP_REQUEST_METHOD_ORIGINAL = 'http.request.method_original';\n/**\n * The ordinal number of request resending attempt (for any reason, including redirects).\n *\n * @example 3\n *\n * @note The resend count **SHOULD** be updated each time an HTTP request gets resent by the client, regardless of what was the cause of the resending (e.g. redirection, authorization failure, 503 Server Unavailable, network issues, or any other).\n */\nexport const ATTR_HTTP_REQUEST_RESEND_COUNT = 'http.request.resend_count';\n/**\n * HTTP response headers, `<key>` being the normalized HTTP Header name (lowercase), the value being the header values.\n *\n * @example [\"application/json\"]\n * @example [\"abc\", \"def\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured.\n * Including all response headers can be a security risk - explicit configuration helps avoid leaking sensitive information.\n *\n * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended.\n *\n * The attribute value **MUST** consist of either multiple header values as an array of strings\n * or a single-item array containing a possibly comma-concatenated string, depending on the way\n * the HTTP library provides access to headers.\n *\n * Examples:\n *\n *   - A header `Content-Type: application/json` header **SHOULD** be recorded as the `http.request.response.content-type`\n *     attribute with value `[\"application/json\"]`.\n *   - A header `My-custom-header: abc, def` header **SHOULD** be recorded as the `http.response.header.my-custom-header`\n *     attribute with value `[\"abc\", \"def\"]` or `[\"abc, def\"]` depending on the HTTP library.\n */\nexport const ATTR_HTTP_RESPONSE_HEADER = (key) => `http.response.header.${key}`;\n/**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n *\n * @example 200\n */\nexport const ATTR_HTTP_RESPONSE_STATUS_CODE = 'http.response.status_code';\n/**\n * The matched route template for the request. This **MUST** be low-cardinality and include all static path segments, with dynamic path segments represented with placeholders.\n *\n * @example /users/:userID?\n * @example my-controller/my-action/{id?}\n *\n * @note **MUST NOT** be populated when this is not supported by the HTTP server framework as the route attribute should have low-cardinality and the URI path can NOT substitute it.\n * **SHOULD** include the [application root](/docs/http/http-spans.md#http-server-definitions) if there is one.\n *\n * A static path segment is a part of the route template with a fixed, low-cardinality value. This includes literal strings like `/users/` and placeholders that\n * are constrained to a finite, predefined set of values, e.g. `{controller}` or `{action}`.\n *\n * A dynamic path segment is a placeholder for a value that can have high cardinality and is not constrained to a predefined list like static path segments.\n *\n * Instrumentations **SHOULD** use routing information provided by the corresponding web framework. They **SHOULD** pick the most precise source of routing information and **MAY**\n * support custom route formatting. Instrumentations **SHOULD** document the format and the API used to obtain the route string.\n */\nexport const ATTR_HTTP_ROUTE = 'http.route';\n/**\n * Name of the garbage collector action.\n *\n * @example end of minor GC\n * @example end of major GC\n *\n * @note Garbage collector action is generally obtained via [GarbageCollectionNotificationInfo#getGcAction()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcAction()).\n */\nexport const ATTR_JVM_GC_ACTION = 'jvm.gc.action';\n/**\n * Name of the garbage collector.\n *\n * @example G1 Young Generation\n * @example G1 Old Generation\n *\n * @note Garbage collector name is generally obtained via [GarbageCollectionNotificationInfo#getGcName()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcName()).\n */\nexport const ATTR_JVM_GC_NAME = 'jvm.gc.name';\n/**\n * Name of the memory pool.\n *\n * @example G1 Old Gen\n * @example G1 Eden space\n * @example G1 Survivor Space\n *\n * @note Pool names are generally obtained via [MemoryPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getName()).\n */\nexport const ATTR_JVM_MEMORY_POOL_NAME = 'jvm.memory.pool.name';\n/**\n * The type of memory.\n *\n * @example heap\n * @example non_heap\n */\nexport const ATTR_JVM_MEMORY_TYPE = 'jvm.memory.type';\n/**\n * Enum value \"heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n *\n * Heap memory.\n */\nexport const JVM_MEMORY_TYPE_VALUE_HEAP = \"heap\";\n/**\n * Enum value \"non_heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n *\n * Non-heap memory\n */\nexport const JVM_MEMORY_TYPE_VALUE_NON_HEAP = \"non_heap\";\n/**\n * Whether the thread is daemon or not.\n */\nexport const ATTR_JVM_THREAD_DAEMON = 'jvm.thread.daemon';\n/**\n * State of the thread.\n *\n * @example runnable\n * @example blocked\n */\nexport const ATTR_JVM_THREAD_STATE = 'jvm.thread.state';\n/**\n * Enum value \"blocked\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that is blocked waiting for a monitor lock is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_BLOCKED = \"blocked\";\n/**\n * Enum value \"new\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that has not yet started is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_NEW = \"new\";\n/**\n * Enum value \"runnable\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread executing in the Java virtual machine is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_RUNNABLE = \"runnable\";\n/**\n * Enum value \"terminated\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that has exited is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_TERMINATED = \"terminated\";\n/**\n * Enum value \"timed_waiting\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_TIMED_WAITING = \"timed_waiting\";\n/**\n * Enum value \"waiting\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that is waiting indefinitely for another thread to perform a particular action is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_WAITING = \"waiting\";\n/**\n * Local address of the network connection - IP address or Unix domain socket name.\n *\n * @example 10.1.2.80\n * @example /tmp/my.sock\n */\nexport const ATTR_NETWORK_LOCAL_ADDRESS = 'network.local.address';\n/**\n * Local port number of the network connection.\n *\n * @example 65123\n */\nexport const ATTR_NETWORK_LOCAL_PORT = 'network.local.port';\n/**\n * Peer address of the network connection - IP address or Unix domain socket name.\n *\n * @example 10.1.2.80\n * @example /tmp/my.sock\n */\nexport const ATTR_NETWORK_PEER_ADDRESS = 'network.peer.address';\n/**\n * Peer port number of the network connection.\n *\n * @example 65123\n */\nexport const ATTR_NETWORK_PEER_PORT = 'network.peer.port';\n/**\n * [OSI application layer](https://wikipedia.org/wiki/Application_layer) or non-OSI equivalent.\n *\n * @example amqp\n * @example http\n * @example mqtt\n *\n * @note The value **SHOULD** be normalized to lowercase.\n */\nexport const ATTR_NETWORK_PROTOCOL_NAME = 'network.protocol.name';\n/**\n * The actual version of the protocol used for network communication.\n *\n * @example 1.1\n * @example 2\n *\n * @note If protocol version is subject to negotiation (for example using [ALPN](https://www.rfc-editor.org/rfc/rfc7301.html)), this attribute **SHOULD** be set to the negotiated version. If the actual protocol version is not known, this attribute **SHOULD NOT** be set.\n */\nexport const ATTR_NETWORK_PROTOCOL_VERSION = 'network.protocol.version';\n/**\n * [OSI transport layer](https://wikipedia.org/wiki/Transport_layer) or [inter-process communication method](https://wikipedia.org/wiki/Inter-process_communication).\n *\n * @example tcp\n * @example udp\n *\n * @note The value **SHOULD** be normalized to lowercase.\n *\n * Consider always setting the transport when setting a port number, since\n * a port number is ambiguous without knowing the transport. For example\n * different processes could be listening on TCP port 12345 and UDP port 12345.\n */\nexport const ATTR_NETWORK_TRANSPORT = 'network.transport';\n/**\n * Enum value \"pipe\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * Named or anonymous pipe.\n */\nexport const NETWORK_TRANSPORT_VALUE_PIPE = \"pipe\";\n/**\n * Enum value \"quic\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * QUIC\n */\nexport const NETWORK_TRANSPORT_VALUE_QUIC = \"quic\";\n/**\n * Enum value \"tcp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * TCP\n */\nexport const NETWORK_TRANSPORT_VALUE_TCP = \"tcp\";\n/**\n * Enum value \"udp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * UDP\n */\nexport const NETWORK_TRANSPORT_VALUE_UDP = \"udp\";\n/**\n * Enum value \"unix\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * Unix domain socket\n */\nexport const NETWORK_TRANSPORT_VALUE_UNIX = \"unix\";\n/**\n * [OSI network layer](https://wikipedia.org/wiki/Network_layer) or non-OSI equivalent.\n *\n * @example ipv4\n * @example ipv6\n *\n * @note The value **SHOULD** be normalized to lowercase.\n */\nexport const ATTR_NETWORK_TYPE = 'network.type';\n/**\n * Enum value \"ipv4\" for attribute {@link ATTR_NETWORK_TYPE}.\n *\n * IPv4\n */\nexport const NETWORK_TYPE_VALUE_IPV4 = \"ipv4\";\n/**\n * Enum value \"ipv6\" for attribute {@link ATTR_NETWORK_TYPE}.\n *\n * IPv6\n */\nexport const NETWORK_TYPE_VALUE_IPV6 = \"ipv6\";\n/**\n * The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP).\n *\n * @example io.opentelemetry.contrib.mongodb\n */\nexport const ATTR_OTEL_SCOPE_NAME = 'otel.scope.name';\n/**\n * The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP).\n *\n * @example 1.0.0\n */\nexport const ATTR_OTEL_SCOPE_VERSION = 'otel.scope.version';\n/**\n * Name of the code, either \"OK\" or \"ERROR\". **MUST NOT** be set if the status code is UNSET.\n */\nexport const ATTR_OTEL_STATUS_CODE = 'otel.status_code';\n/**\n * Enum value \"ERROR\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n *\n * The operation contains an error.\n */\nexport const OTEL_STATUS_CODE_VALUE_ERROR = \"ERROR\";\n/**\n * Enum value \"OK\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n *\n * The operation has been validated by an Application developer or Operator to have completed successfully.\n */\nexport const OTEL_STATUS_CODE_VALUE_OK = \"OK\";\n/**\n * Description of the Status if it has a value, otherwise not set.\n *\n * @example resource not found\n */\nexport const ATTR_OTEL_STATUS_DESCRIPTION = 'otel.status_description';\n/**\n * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the client side, and when communicating through an intermediary, `server.address` **SHOULD** represent the server address behind any intermediaries, for example proxies, if it's available.\n */\nexport const ATTR_SERVER_ADDRESS = 'server.address';\n/**\n * Server port number.\n *\n * @example 80\n * @example 8080\n * @example 443\n *\n * @note When observed from the client side, and when communicating through an intermediary, `server.port` **SHOULD** represent the server port behind any intermediaries, for example proxies, if it's available.\n */\nexport const ATTR_SERVER_PORT = 'server.port';\n/**\n * Logical name of the service.\n *\n * @example shoppingcart\n *\n * @note **MUST** be the same for all instances of horizontally scaled services. If the value was not specified, SDKs **MUST** fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value **MUST** be set to `unknown_service`.\n */\nexport const ATTR_SERVICE_NAME = 'service.name';\n/**\n * The version string of the service API or implementation. The format is not defined by these conventions.\n *\n * @example 2.0.0\n * @example a01dbef8a\n */\nexport const ATTR_SERVICE_VERSION = 'service.version';\n/**\n * SignalR HTTP connection closure status.\n *\n * @example app_shutdown\n * @example timeout\n */\nexport const ATTR_SIGNALR_CONNECTION_STATUS = 'signalr.connection.status';\n/**\n * Enum value \"app_shutdown\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed because the app is shutting down.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN = \"app_shutdown\";\n/**\n * Enum value \"normal_closure\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed normally.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE = \"normal_closure\";\n/**\n * Enum value \"timeout\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed due to a timeout.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT = \"timeout\";\n/**\n * [SignalR transport type](https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/TransportProtocols.md)\n *\n * @example web_sockets\n * @example long_polling\n */\nexport const ATTR_SIGNALR_TRANSPORT = 'signalr.transport';\n/**\n * Enum value \"long_polling\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * LongPolling protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_LONG_POLLING = \"long_polling\";\n/**\n * Enum value \"server_sent_events\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * ServerSentEvents protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS = \"server_sent_events\";\n/**\n * Enum value \"web_sockets\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * WebSockets protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS = \"web_sockets\";\n/**\n * The language of the telemetry SDK.\n */\nexport const ATTR_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language';\n/**\n * Enum value \"cpp\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_CPP = \"cpp\";\n/**\n * Enum value \"dotnet\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET = \"dotnet\";\n/**\n * Enum value \"erlang\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG = \"erlang\";\n/**\n * Enum value \"go\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_GO = \"go\";\n/**\n * Enum value \"java\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_JAVA = \"java\";\n/**\n * Enum value \"nodejs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS = \"nodejs\";\n/**\n * Enum value \"php\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_PHP = \"php\";\n/**\n * Enum value \"python\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON = \"python\";\n/**\n * Enum value \"ruby\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_RUBY = \"ruby\";\n/**\n * Enum value \"rust\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_RUST = \"rust\";\n/**\n * Enum value \"swift\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT = \"swift\";\n/**\n * Enum value \"webjs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS = \"webjs\";\n/**\n * The name of the telemetry SDK as defined above.\n *\n * @example opentelemetry\n *\n * @note The OpenTelemetry SDK **MUST** set the `telemetry.sdk.name` attribute to `opentelemetry`.\n * If another SDK, like a fork or a vendor-provided implementation, is used, this SDK **MUST** set the\n * `telemetry.sdk.name` attribute to the fully-qualified class or module name of this SDK's main entry point\n * or another suitable identifier depending on the language.\n * The identifier `opentelemetry` is reserved and **MUST NOT** be used in this case.\n * All custom identifiers **SHOULD** be stable across different versions of an implementation.\n */\nexport const ATTR_TELEMETRY_SDK_NAME = 'telemetry.sdk.name';\n/**\n * The version string of the telemetry SDK.\n *\n * @example 1.2.3\n */\nexport const ATTR_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version';\n/**\n * The [URI fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component\n *\n * @example SemConv\n */\nexport const ATTR_URL_FRAGMENT = 'url.fragment';\n/**\n * Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986)\n *\n * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv\n * @example //localhost\n *\n * @note For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment\n * is not transmitted over HTTP, but if it is known, it **SHOULD** be included nevertheless.\n *\n * `url.full` **MUST NOT** contain credentials passed via URL in form of `https://username:password@www.example.com/`.\n * In such case username and password **SHOULD** be redacted and attribute's value **SHOULD** be `https://REDACTED:REDACTED@www.example.com/`.\n *\n * `url.full` **SHOULD** capture the absolute URL when it is available (or can be reconstructed).\n *\n * Sensitive content provided in `url.full` **SHOULD** be scrubbed when instrumentations can identify it.\n *\n *\n * Query string values for the following keys **SHOULD** be redacted by default and replaced by the\n * value `REDACTED`:\n *\n *   - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n *   - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n *   - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token)\n *   - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls)\n *\n * This list is subject to change over time.\n *\n * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g.\n * `https://www.example.com/path?color=blue&sig=REDACTED`.\n */\nexport const ATTR_URL_FULL = 'url.full';\n/**\n * The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component\n *\n * @example /search\n *\n * @note Sensitive content provided in `url.path` **SHOULD** be scrubbed when instrumentations can identify it.\n */\nexport const ATTR_URL_PATH = 'url.path';\n/**\n * The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component\n *\n * @example q=OpenTelemetry\n *\n * @note Sensitive content provided in `url.query` **SHOULD** be scrubbed when instrumentations can identify it.\n *\n *\n * Query string values for the following keys **SHOULD** be redacted by default and replaced by the value `REDACTED`:\n *\n *   - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n *   - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n *   - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token)\n *   - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls)\n *\n * This list is subject to change over time.\n *\n * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g.\n * `q=OpenTelemetry&sig=REDACTED`.\n */\nexport const ATTR_URL_QUERY = 'url.query';\n/**\n * The [URI scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component identifying the used protocol.\n *\n * @example https\n * @example ftp\n * @example telnet\n */\nexport const ATTR_URL_SCHEME = 'url.scheme';\n/**\n * Value of the [HTTP User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) header sent by the client.\n *\n * @example CERN-LineMode/2.15 libwww/2.17b3\n * @example Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1\n * @example YourApp/1.0.0 grpc-java-okhttp/1.27.2\n */\nexport const ATTR_USER_AGENT_ORIGINAL = 'user_agent.original';\n//# sourceMappingURL=stable_attributes.js.map","import fs from \"fs\";\nimport os from \"os\";\nimport path from \"path\";\n\nimport {\n  HttpInstrumentation,\n  PgInstrumentation,\n  FetchInstrumentation,\n  TcpInstrumentation,\n  GraphqlInstrumentation,\n  JsonwebtokenInstrumentation,\n  DateInstrumentation,\n  JwksRsaInstrumentation,\n  EnvInstrumentation,\n  PostgresInstrumentation,\n  Mysql2Instrumentation,\n  IORedisInstrumentation,\n  UpstashRedisInstrumentation,\n  GrpcInstrumentation,\n  FirestoreInstrumentation,\n  NextjsInstrumentation,\n  PrismaInstrumentation,\n} from \"../instrumentation/libraries\";\nimport { TdSpanExporter } from \"./tracing/TdSpanExporter\";\nimport { trace, Tracer } from \"@opentelemetry/api\";\nimport { NodeTracerProvider } from \"@opentelemetry/sdk-trace-node\";\nimport { ProtobufCommunicator, MockRequestInput } from \"./ProtobufCommunicator\";\nimport { BatchSpanProcessor } from \"@opentelemetry/sdk-trace-node\";\nimport { CleanSpanData, TD_INSTRUMENTATION_LIBRARY_NAME } from \"./types\";\nimport { TuskDriftInstrumentationModuleNames } from \"./TuskDriftInstrumentationModuleNames\";\nimport { SDK_VERSION } from \"../version\";\nimport {\n  LogLevel,\n  initializeGlobalLogger,\n  logger,\n  loadTuskConfig,\n  TuskConfig,\n  OriginalGlobalUtils,\n} from \"./utils\";\nimport { TransformConfigs } from \"../instrumentation/libraries/types\";\nimport { ATTR_SERVICE_NAME } from \"@opentelemetry/semantic-conventions\";\nimport { Resource } from \"@opentelemetry/resources\";\n\nexport interface InitParams {\n  apiKey?: string;\n  env?: string;\n  logLevel?: LogLevel;\n  transforms?: TransformConfigs;\n  samplingRate?: number;\n}\n\nexport enum TuskDriftMode {\n  DISABLED = \"DISABLED\",\n  RECORD = \"RECORD\",\n  REPLAY = \"REPLAY\",\n}\n\n/**\n * The core class for Tusk Drift.\n * This class is responsible for initializing the Tusk Drift SDK and managing the Tusk Drift instance.\n */\nexport class TuskDriftCore {\n  private static instance: TuskDriftCore;\n  private initialized = false;\n  private appReady = false;\n  private mode: TuskDriftMode;\n  private initParams: InitParams;\n  private config: TuskConfig;\n  private communicator?: ProtobufCommunicator | undefined;\n  private samplingRate: number;\n  private cliConnectionPromise: Promise<void> | null;\n  // Add a flag to track connection status\n  private isConnectedWithCLI = false;\n  spanExporter?: TdSpanExporter;\n\n  constructor() {\n    this.mode = this.detectMode();\n    this.config = loadTuskConfig() || {};\n  }\n\n  private isCommonJS(): boolean {\n    return (\n      typeof module !== \"undefined\" &&\n      \"exports\" in module &&\n      typeof require !== \"undefined\" &&\n      typeof require.cache !== \"undefined\"\n    );\n  }\n\n  private getPackageName(modulePath: string): string | null {\n    let dir = path.dirname(modulePath);\n    while (dir) {\n      const packageJsonPath = path.join(dir, \"package.json\");\n      if (fs.existsSync(packageJsonPath)) {\n        try {\n          const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, \"utf8\"));\n          return packageJson.name || null;\n        } catch (err) {\n          logger.error(`Error reading package.json in ${packageJsonPath}:`, err);\n          return null;\n        }\n      }\n      const parentDir = path.dirname(dir);\n      if (parentDir === dir || !parentDir.includes(\"node_modules\")) {\n        break;\n      }\n      dir = parentDir;\n    }\n    return null;\n  }\n\n  private alreadyRequiredModules(): Set<string> {\n    const alreadyRequiredModuleNames = new Set<string>();\n\n    if (this.isCommonJS()) {\n      const requireCache = Object.keys(require.cache);\n      for (const modulePath of requireCache) {\n        if (modulePath.includes(\"node_modules\")) {\n          const packageName = this.getPackageName(modulePath);\n          if (packageName && TuskDriftInstrumentationModuleNames.includes(packageName)) {\n            alreadyRequiredModuleNames.add(packageName);\n          }\n        }\n      }\n    } else {\n      // ESM or other module systems - no reliable detection possible\n      logger.debug(\"Running in ES Module mode. Cannot detect pre-loaded instrumentation modules.\");\n    }\n\n    return alreadyRequiredModuleNames;\n  }\n\n  static getInstance(): TuskDriftCore {\n    if (!TuskDriftCore.instance) {\n      TuskDriftCore.instance = new TuskDriftCore();\n    }\n    return TuskDriftCore.instance;\n  }\n\n  private detectMode(): TuskDriftMode {\n    const modeEnv = OriginalGlobalUtils.getOriginalProcessEnvVar(\"TUSK_DRIFT_MODE\");\n\n    switch (modeEnv?.toUpperCase()) {\n      case \"RECORD\":\n        return TuskDriftMode.RECORD;\n      case \"REPLAY\":\n        return TuskDriftMode.REPLAY;\n      case \"DISABLED\":\n      case \"DISABLE\":\n        return TuskDriftMode.DISABLED;\n      default:\n        // If no mode specified, default to disabled\n        return TuskDriftMode.DISABLED;\n    }\n  }\n\n  private validateSamplingRate(value: number, source: string): boolean {\n    if (typeof value !== \"number\" || isNaN(value)) {\n      logger.warn(`Invalid sampling rate from ${source}: not a number. Ignoring.`);\n      return false;\n    }\n    if (value < 0 || value > 1) {\n      logger.warn(\n        `Invalid sampling rate from ${source}: ${value}. Must be between 0.0 and 1.0. Ignoring.`,\n      );\n      return false;\n    }\n    return true;\n  }\n\n  private determineSamplingRate(initParams: InitParams): number {\n    // Precedence: InitParams > Env Var > Config YAML > Default (1.0)\n\n    // 1. Check init params (highest priority)\n    if (initParams.samplingRate !== undefined) {\n      if (this.validateSamplingRate(initParams.samplingRate, \"init params\")) {\n        logger.debug(`Using sampling rate from init params: ${initParams.samplingRate}`);\n        return initParams.samplingRate;\n      }\n    }\n\n    // 2. Check environment variable\n    const envSamplingRate = OriginalGlobalUtils.getOriginalProcessEnvVar(\"TUSK_SAMPLING_RATE\");\n    if (envSamplingRate !== undefined) {\n      const parsed = parseFloat(envSamplingRate);\n      if (this.validateSamplingRate(parsed, \"TUSK_SAMPLING_RATE env var\")) {\n        logger.debug(`Using sampling rate from TUSK_SAMPLING_RATE env var: ${parsed}`);\n        return parsed;\n      }\n    }\n\n    // 3. Check config file\n    if (this.config.recording?.sampling_rate !== undefined) {\n      if (this.validateSamplingRate(this.config.recording.sampling_rate, \"config.yaml\")) {\n        logger.debug(\n          `Using sampling rate from config.yaml: ${this.config.recording.sampling_rate}`,\n        );\n        return this.config.recording.sampling_rate;\n      }\n    }\n\n    // 4. Default to 1.0 (100%)\n    logger.debug(\"Using default sampling rate: 1.0\");\n    return 1;\n  }\n\n  private registerDefaultInstrumentations(): void {\n    const transforms = this.config.transforms ?? this.initParams.transforms;\n\n    // Just creating the instrumentations registers them with the sdk\n    // All these instrumentations extend TdInstrumentationBase\n    // TdInstrumentationBase constructor calls enable() which sets up the require-in-the-middle hooks to patch the modules\n    // when the modules are required\n    new HttpInstrumentation({\n      enabled: true,\n      mode: this.mode,\n      transforms,\n    });\n\n    new PgInstrumentation({\n      enabled: true,\n      mode: this.mode,\n    });\n\n    new FetchInstrumentation({\n      enabled: true,\n      mode: this.mode,\n      transforms,\n    });\n\n    new TcpInstrumentation({\n      enabled: true,\n      mode: this.mode,\n    });\n\n    new GraphqlInstrumentation({\n      enabled: true,\n      mode: this.mode,\n    });\n\n    new JsonwebtokenInstrumentation({\n      enabled: true,\n      mode: this.mode,\n    });\n\n    new DateInstrumentation({\n      enabled: true,\n      mode: this.mode,\n    });\n\n    new JwksRsaInstrumentation({\n      enabled: true,\n      mode: this.mode,\n    });\n\n    new EnvInstrumentation({\n      enabled: this.config.recording?.enable_env_var_recording || false,\n      mode: this.mode,\n    });\n\n    new PostgresInstrumentation({\n      enabled: true,\n      mode: this.mode,\n    });\n\n    new Mysql2Instrumentation({\n      enabled: true,\n      mode: this.mode,\n    });\n\n    new IORedisInstrumentation({\n      enabled: true,\n      mode: this.mode,\n    });\n\n    new UpstashRedisInstrumentation({\n      enabled: true,\n      mode: this.mode,\n    });\n\n    new GrpcInstrumentation({\n      enabled: true,\n      mode: this.mode,\n    });\n\n    new FirestoreInstrumentation({\n      enabled: true,\n      mode: this.mode,\n    });\n\n    new NextjsInstrumentation({\n      enabled: true,\n      mode: this.mode,\n    });\n\n    new PrismaInstrumentation({\n      enabled: true,\n      mode: this.mode,\n    });\n  }\n\n  private initializeTracing({ baseDirectory }: { baseDirectory: string }): void {\n    const serviceName = this.config.service?.name || \"unknown\";\n\n    logger.debug(`Initializing OpenTelemetry tracing for service: ${serviceName}`);\n\n    this.spanExporter = new TdSpanExporter({\n      baseDirectory,\n      mode: this.mode,\n      useRemoteExport: this.config.recording?.export_spans || false,\n      observableServiceId: this.config.service?.id,\n      apiKey: this.initParams.apiKey,\n      tuskBackendBaseUrl: this.config.tusk_api?.url || \"https://api.usetusk.ai\",\n      environment: this.initParams.env || \"unknown\",\n      sdkVersion: SDK_VERSION,\n      sdkInstanceId: this.generateSdkInstanceId(),\n    });\n\n    const tracerProvider = new NodeTracerProvider({\n      resource: new Resource({\n        [ATTR_SERVICE_NAME]: serviceName,\n      }),\n      spanProcessors: [\n        new BatchSpanProcessor(this.spanExporter, {\n          // Maximum queue size before spans are dropped, default 2048\n          maxQueueSize: 2048,\n          // Maximum batch size per export, default 512\n          maxExportBatchSize: 512,\n          // Interval between exports, default 5s\n          scheduledDelayMillis: 2000,\n          // Max time for export before timeout, default 30s\n          exportTimeoutMillis: 30000,\n        }),\n      ],\n    });\n\n    // Register the tracer provider\n    tracerProvider.register();\n    logger.debug(`OpenTelemetry tracing initialized`);\n  }\n\n  private generateSdkInstanceId(): string {\n    const originalDate = OriginalGlobalUtils.getOriginalDate();\n    return `sdk-${originalDate.getTime()}-${Math.random().toString(36).substr(2, 9)}`;\n  }\n\n  initialize(initParams: InitParams): void {\n    // Initialize logging with provided level or default to 'info'\n    initializeGlobalLogger({\n      logLevel: initParams.logLevel || \"info\",\n      prefix: \"TuskDrift\",\n    });\n\n    this.initParams = initParams;\n\n    if (this.initialized) {\n      logger.debug(\"Already initialized, skipping...\");\n      return;\n    }\n\n    if (\n      this.mode === TuskDriftMode.RECORD &&\n      this.config.recording?.export_spans &&\n      !this.initParams.apiKey\n    ) {\n      logger.error(\n        \"In record mode and export_spans is true, but API key not provided. API key is required to export spans to Tusk backend. Please provide an API key in the initialization parameters.\",\n      );\n      return;\n    }\n\n    if (this.mode === TuskDriftMode.DISABLED) {\n      logger.debug(\"SDK disabled via environment variable\");\n      return;\n    }\n\n    logger.debug(`Initializing in ${this.mode} mode`);\n\n    if (!this.initParams.env) {\n      const nodeEnv = OriginalGlobalUtils.getOriginalProcessEnvVar(\"NODE_ENV\") || \"development\";\n      logger.warn(\n        `Environment not provided in initialization parameters. Using '${nodeEnv}' as the environment.`,\n      );\n      this.initParams.env = nodeEnv;\n    }\n\n    this.samplingRate = this.determineSamplingRate(initParams);\n\n    // Need to have observable service id if exporting spans to Tusk backend\n    if (this.config.recording?.export_spans && !this.config.service?.id) {\n      logger.error(\n        \"Observable service ID not provided. Please provide an observable service ID in the configuration file.\",\n      );\n      return;\n    }\n\n    if (this.mode === TuskDriftMode.REPLAY) {\n      // Disable Sentry in replay mode\n      process.env.SENTRY_DSN = \"\";\n    }\n\n    // Initialize ProtobufCommunicator early\n    this.communicator = new ProtobufCommunicator();\n\n    if (this.mode === TuskDriftMode.REPLAY) {\n      // Check if TCP mode or Unix socket mode\n      const mockHost = OriginalGlobalUtils.getOriginalProcessEnvVar(\"TUSK_MOCK_HOST\");\n      const mockPort = OriginalGlobalUtils.getOriginalProcessEnvVar(\"TUSK_MOCK_PORT\");\n      const mockSocket = OriginalGlobalUtils.getOriginalProcessEnvVar(\"TUSK_MOCK_SOCKET\");\n\n      let connectionInfo: { socketPath: string } | { host: string; port: number };\n\n      if (mockHost && mockPort) {\n        // TCP mode (Docker)\n        connectionInfo = {\n          host: mockHost,\n          port: parseInt(mockPort, 10),\n        };\n        logger.debug(`Using TCP connection to CLI: ${mockHost}:${mockPort}`);\n      } else {\n        // Unix socket mode (default)\n        const socketPath = mockSocket || path.join(os.tmpdir(), \"tusk-connect.sock\");\n\n        // Check if socket exists and is ready\n        try {\n          fs.accessSync(socketPath, fs.constants.F_OK);\n          const stats = fs.statSync(socketPath);\n          if (!stats.isSocket()) {\n            throw new Error(`Path exists but is not a socket: ${socketPath}`);\n          }\n          logger.debug(\"Socket found and verified at\", socketPath);\n        } catch (error) {\n          if (error instanceof Error && \"code\" in error && error.code === \"ENOENT\") {\n            throw new Error(`Socket not found at ${socketPath}. Make sure Tusk CLI is running.`);\n          }\n          throw new Error(\n            `Socket check failed: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n          );\n        }\n\n        connectionInfo = { socketPath };\n      }\n\n      // Start connection early for replay mode (runs in parallel with other initialization)\n      // This will be awaited when the first requestAsyncMock is called\n      this.cliConnectionPromise = this.communicator\n        .connect(connectionInfo, this.config.service?.id || \"unknown\")\n        .then(() => {\n          this.isConnectedWithCLI = true;\n          logger.debug(\"SDK successfully connected to CLI\");\n        });\n    }\n\n    // Check if any instrumentation modules are already required\n    const packageNames = this.alreadyRequiredModules();\n    if (packageNames.size > 0) {\n      const moduleList = [...packageNames].join(\", \");\n      const message = `TuskDrift must be initialized before any other modules are required. This ensures TuskDrift is able to instrument the required modules. ${moduleList} ${packageNames.size > 1 ? \"are\" : \"is\"} already required.`;\n\n      if (this.mode === TuskDriftMode.RECORD) {\n        logger.warn(`${message} TuskDrift is now disabled and will continue in disabled mode.`);\n        this.mode = TuskDriftMode.DISABLED;\n        return;\n      } else if (this.mode === TuskDriftMode.REPLAY) {\n        logger.error(`${message} TuskDrift will not run in replay mode. Stopping the app.`);\n        process.exit(1);\n      }\n    }\n\n    // Only used when storing spans locally\n    const baseDirectory = this.config.traces?.dir || path.join(process.cwd(), \".tusk/traces\");\n\n    logger.debug(`Config: ${JSON.stringify(this.config)}`);\n    logger.debug(`Base directory: ${baseDirectory}`);\n\n    // Register instrumentations (runs in parallel with connection)\n    this.registerDefaultInstrumentations();\n\n    // Initialize OpenTelemetry tracing (runs in parallel with connection)\n    // Important to do this after registering instrumentations since initializeTracing lazy imports the NodeSDK from OpenTelemetry\n    // which imports the gRPC exporter\n    this.initializeTracing({ baseDirectory });\n\n    this.initialized = true;\n    logger.info(\"SDK initialized successfully\");\n  }\n\n  markAppAsReady(): void {\n    if (!this.initialized) {\n      if (this.mode !== TuskDriftMode.DISABLED) {\n        logger.error(\"markAppAsReady() called before initialize(). Call initialize() first.\");\n      }\n      return;\n    }\n\n    this.appReady = true;\n    logger.debug(\"Application marked as ready\");\n\n    if (this.mode === TuskDriftMode.REPLAY) {\n      logger.debug(\"Replay mode active - ready to serve mocked responses\");\n    } else if (this.mode === TuskDriftMode.RECORD) {\n      logger.debug(\"Record mode active - capturing inbound requests and responses\");\n    }\n  }\n\n  async sendInboundSpanForReplay(span: CleanSpanData): Promise<void> {\n    try {\n      if (this.communicator) {\n        await this.communicator.sendInboundSpanForReplay(span);\n      }\n    } catch (e) {\n      logger.error(\"Failed to send inbound replay span:\", e);\n    }\n  }\n\n  private createMockRequestCore(\n    mockRequest: MockRequestInput,\n  ): { found: boolean; response?: unknown; error?: string } | null {\n    if (!this.communicator || this.mode !== TuskDriftMode.REPLAY) {\n      logger.error(\n        \"Cannot request mock: not in replay mode or no CLI connection\",\n        this.mode,\n        this.communicator,\n      );\n      return { found: false, error: \"Not in replay mode or no CLI connection\" };\n    }\n\n    return null; // Indicates we should proceed with CLI request\n  }\n\n  async requestMockAsync(\n    mockRequest: MockRequestInput,\n  ): Promise<{ found: boolean; response?: unknown; error?: string }> {\n    if (this.cliConnectionPromise && !this.isConnectedWithCLI) {\n      logger.debug(\"Waiting for CLI connection to be established\");\n      await this.cliConnectionPromise;\n    }\n\n    const mockRequestCore = this.createMockRequestCore(mockRequest);\n    if (mockRequestCore) {\n      return mockRequestCore;\n    }\n    return this.requestMockFromCLIAsync(mockRequest);\n  }\n\n  private async requestMockFromCLIAsync(\n    mockRequest: MockRequestInput,\n  ): Promise<{ found: boolean; response?: unknown; error?: string }> {\n    if (!this.communicator || this.mode !== TuskDriftMode.REPLAY) {\n      logger.error(\"Cannot request mock: not in replay mode or no CLI connection\");\n      return { found: false, error: \"Not in replay mode or no CLI connection\" };\n    }\n\n    try {\n      logger.debug(\"Sending protobuf request to CLI (async)\", JSON.stringify(mockRequest, null, 2));\n\n      const response = await this.communicator.requestMockAsync({\n        testId: mockRequest.testId,\n        outboundSpan: mockRequest.outboundSpan,\n      });\n\n      logger.debug(\"Received protobuf response from CLI\", JSON.stringify(response, null, 2));\n      return response;\n    } catch (error) {\n      logger.error(\"Error sending protobuf request to CLI:\", error);\n      return {\n        found: false,\n        error: `Error sending request: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n      };\n    }\n  }\n\n  /**\n   * Request environment variables from CLI for a specific trace (synchronously).\n   * This blocks the main thread, so it should be used carefully.\n   */\n  requestEnvVarsSync(traceTestServerSpanId: string): Record<string, string> {\n    if (!this.isConnectedWithCLI) {\n      logger.error(\"Requesting sync env vars but CLI is not ready yet\");\n      throw new Error(\"Requesting sync env vars but CLI is not ready yet\");\n    }\n\n    if (!this.communicator || this.mode !== TuskDriftMode.REPLAY) {\n      logger.debug(\"Cannot request env vars: not in replay mode or no CLI connection\");\n      return {};\n    }\n\n    try {\n      logger.debug(`Requesting env vars (sync) for trace: ${traceTestServerSpanId}`);\n      const envVars = this.communicator.requestEnvVarsSync(traceTestServerSpanId);\n      logger.debug(`Received env vars from CLI, count: ${Object.keys(envVars).length}`);\n      logger.debug(\n        `First 10 env vars: ${JSON.stringify(Object.keys(envVars).slice(0, 10), null, 2)}`,\n      );\n      return envVars;\n    } catch (error) {\n      logger.error(`[TuskDrift] Error requesting env vars from CLI:`, error);\n      return {};\n    }\n  }\n\n  requestMockSync(mockRequest: MockRequestInput): {\n    found: boolean;\n    response?: unknown;\n    error?: string;\n  } {\n    if (!this.isConnectedWithCLI) {\n      // We cannot await for the CLI to be connected like we do in requestMockAsync since it's a synchronous call\n      // That means this function will likely throw an error if the first mock requested needs to be sync\n      // This is a limitation of the current implementation and will be fixed in the future\n      logger.error(\"Requesting sync mock but CLI is not ready yet\");\n      throw new Error(\"Requesting sync mock but CLI is not ready yet\");\n    }\n\n    const mockRequestCore = this.createMockRequestCore(mockRequest);\n    if (mockRequestCore) {\n      return mockRequestCore;\n    }\n    return this.requestMockFromCLISync(mockRequest);\n  }\n\n  private requestMockFromCLISync(mockRequest: MockRequestInput): {\n    found: boolean;\n    response?: unknown;\n    error?: string;\n  } {\n    if (!this.communicator || this.mode !== TuskDriftMode.REPLAY) {\n      logger.error(\n        \"Cannot request mock: not in replay mode or no CLI connection\",\n        this.mode,\n        this.communicator,\n      );\n      return { found: false, error: \"Not in replay mode or no CLI connection\" };\n    }\n\n    try {\n      logger.debug(\"Sending protobuf request to CLI (sync)\", mockRequest);\n\n      const response = this.communicator.requestMockSync({\n        testId: mockRequest.testId,\n        outboundSpan: mockRequest.outboundSpan,\n      });\n\n      logger.debug(\"Received protobuf response from CLI\", response);\n      return response;\n    } catch (error) {\n      logger.error(\"Error sending protobuf request to CLI:\", error);\n      return {\n        found: false,\n        error: `Error sending request: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n      };\n    }\n  }\n\n  getMode(): TuskDriftMode {\n    return this.mode;\n  }\n\n  getSamplingRate(): number {\n    return this.samplingRate;\n  }\n\n  isInitialized(): boolean {\n    return this.initialized;\n  }\n\n  isAppReady(): boolean {\n    return this.appReady;\n  }\n\n  getConfig(): TuskConfig {\n    return this.config;\n  }\n\n  getInitParams(): InitParams {\n    return this.initParams;\n  }\n\n  getTracer(): Tracer {\n    return trace.getTracer(TD_INSTRUMENTATION_LIBRARY_NAME);\n  }\n\n  getProtobufCommunicator(): ProtobufCommunicator | undefined {\n    return this.communicator;\n  }\n}\n\n// These JSDoc comments are exposed in the type definitions\ninterface TuskDriftPublicAPI {\n  /**\n   * Initialize the TuskDrift SDK instance\n   *\n   * This is the main initialization function for TuskDrift that must be called before importing/requiring any other modules.\n   *\n   * @param initParams - The initialization parameters object containing:\n   *   - apiKey: string - Your TuskDrift API key (required)\n   *   - env: string - The environment name (e.g., 'development', 'staging', 'production') (required)\n   *   - logLevel?: LogLevel - Optional logging level ('silent' | 'error' | 'warn' | 'info' | 'debug'), defaults to 'info'\n   *   - samplingRate?: number - Optional sampling rate (0.0-1.0) for recording requests. Overrides TUSK_SAMPLING_RATE env var and config.yaml. Defaults to 1.0\n   *\n   * @returns void - Initializes the SDK\n   *\n   * @example\n   * ```typescript\n   * import  { TuskDrift } from \"@use-tusk/drift-node-sdk\"\n   *\n   * TuskDrift.initialize({\n   *   apiKey: 'your-api-key',\n   *   env: 'production',\n   *   logLevel: 'debug',\n   *   samplingRate: 1  // Record 100% of requests\n   * });\n   *\n   * ```\n   */\n  initialize(initParams: InitParams): void;\n\n  /**\n   * Mark the application as ready for recording/replay\n   *\n   * This should be called after the application has completed initialization and is ready to serve requests.\n   *\n   * @returns void\n   */\n  markAppAsReady(): void;\n\n  /**\n   * Check if the application is ready\n   */\n  isAppReady(): boolean;\n}\n\nclass TuskDriftSDK implements TuskDriftPublicAPI {\n  private tuskDrift = TuskDriftCore.getInstance();\n\n  initialize(initParams: InitParams): void {\n    return this.tuskDrift.initialize(initParams);\n  }\n\n  markAppAsReady(): void {\n    return this.tuskDrift.markAppAsReady();\n  }\n\n  isAppReady(): boolean {\n    return this.tuskDrift.isAppReady();\n  }\n}\n\n// Export singleton instance with restricted API\nexport const TuskDrift: TuskDriftPublicAPI = new TuskDriftSDK();\n"],"x_google_ignoreList":[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,209,210,211,212,213,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,300,303],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,SAAgB,mBAAuC;AACrD,KAAI;EAEF,MAAM,sBAAsB,KAAK,KAAK,QAAQ,KAAK,EAAE,gBAAgB,QAAQ,eAAe;AAE5F,MAAI,GAAG,WAAW,oBAAoB,CAEpC,QADoB,KAAK,MAAM,GAAG,aAAa,qBAAqB,QAAQ,CAAC,CAC1D;UAEd,OAAO;;;;;;;;AAalB,SAAgB,aAAa,WAAgC;AAC3D,KAAI;EACF,MAAM,2BAAqBA,UAAQ;AAEnC,MAAI,CAAC,OACH,QAAO;GACL,OAAO;GACP,OAAO;GACP,OAAO;GACP,YAAY;GACb;AAGH,SAAO;GACL,OAAO,OAAO;GACd,OAAO,OAAO;GACd,OAAO,OAAO;GACd,YAAY,OAAO,WAAW,SAAS,IAAI,OAAO,WAAW,KAAK,IAAI,GAAG;GAC1E;SACK;AACN,SAAO;GACL,OAAO;GACP,OAAO;GACP,OAAO;GACP,YAAY;GACb;;;;;;;;;;;AAYL,SAAgB,6BAA6B,WAAsC;AACjF,KAAI,CAACA,UAGH,QAAO;CAGT,MAAM,EAAE,gBAAO,OAAO,OAAO,eAAe,aAAaA,UAAQ;AAGjE,KAAIC,YAAU,UAAa,UAAU,UAAa,UAAU,OAC1D,QAAO;AAIT,KAAIA,WAAS,GACX,QAAO;AAIT,KAAIA,UAAQ,GACV,QAAO;AAIT,KAAIA,YAAU,IAAI;AAEhB,MAAI,QAAQ,KAAK,QAAQ,EACvB,QAAO;AAIT,MAAI,UAAU,KAAK,UAAU,KAAK,eAAe,OAC/C,QAAO;AAIT,MAAI,YAAY,WAAW,MAAM,EAE/B;OADiB,SAAS,WAAW,MAAM,IAAI,CAAC,MAAM,KAAK,GAAG,IAC9C,EACd,QAAO;;AAKX,MAAI,YAAY,WAAW,UAAU,EAEnC;OADqB,SAAS,WAAW,MAAM,IAAI,CAAC,MAAM,KAAK,GAAG,IAC9C,IAClB,QAAO;;AAKX,SAAO;;AAIT,QAAO;;;;;;;;AAST,SAAgB,SAAS,OAAgB,SAAuB;AAC9D,KAAI,MAEF,SAAQ,IAAI,gBAAgB,UAAU;;;;;;;;AAU1C,SAAgB,KAAK,UAAmB,SAAuB;AAC7D,KAAI,CAAC,SAEH,SAAQ,KAAK,gBAAgB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvG3C,SAAgB,cACd,aAAyB,EAAE,EAC3B,UAAgC,EAAE,EACtB;CACZ,MAAM,SAAS;CAEf,MAAM,QAAQ,QAAQ,SAAS;CAC/B,MAAM,sBAAsB,QAAQ,oBAAoB;CAGxD,MAAM,gBAAgB,kBAAkB;AAExC,KAAI,cACF,UAAS,OAAO,6BAA6B,gBAAgB;KAE7D,MACE,uBAAuB,OACvB,gJAED;CAIH,MAAM,2BACJ,CAAC,QAAQ,8BAA8B,6BAA6B,cAAc;CAEpF,MAAMC,gBAA4B;EAChC,GAAG;EACH,GAAI,2BACA,EACE,cAAc;GACZ,GAAG,OAAO;GACV,qBAAqB;GACtB,EACF,GACD,EACE,cAAc,OAAO,cACtB;EACL,UAAU,eAAoB,mBAAwB;AACpD,OAAI,eAAe,UAAU;IAE3B,MAAM,oBAAoB,cAAc;IAGxC,MAAM,OAAO,QAAQ,IAAI,iBAAiB,aAAa;IAyBvD,MAAM,gBAAgB;KACpB;KACA;KACA,GA3BuB,SAAS,YAAY,SAAS,WA4BjD;MACE;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACD,GACD,EAAE;KACP;IAID,MAAMC,mBAA2C,EAAE;AACnD,SAAK,MAAM,OAAO,eAAe;AAC/B,sBAAiB,OAAO,YAAY;AACpC,cAAS,OAAO,mBAAmB,IAAI,eAAe,MAAM;;AAI9D,QAAI,CAAC,mBAAmB;AACtB,mBAAc,YAAY,CAAC,iBAAiB;AAC5C,cAAS,OAAO,uCAAuC;eAC9C,MAAM,QAAQ,kBAAkB,EAAE;AAC3C,uBAAkB,KAAK,iBAAiB;AACxC,cAAS,OAAO,8CAA8C;WACzD;AACL,mBAAc,YAAY,CAAC,mBAAmB,iBAAiB;AAC/D,cAAS,OAAO,4CAA4C;;;AAKhE,OAAI,OAAO,OAAO,YAAY,WAC5B,QAAO,OAAO,QAAQ,eAAe,eAAe;AAGtD,UAAO;;EAEV;AAED,KAAI,yBACF,UAAS,OAAO,+CAA+C;KAE/D,UACE,OACA,yFACD;AAIH,KACE,QAAQ,8BACR,iBACA,6BAA6B,cAAc,CAE3C,MACE,uBAAuB,OACvB,uKAED;AAGH,QAAO;;;;;ACxLT,IAAsB,4BAAtB,MAAgD;CAI9C,YAAY,qBAA6B,SAAkC,EAAE,EAAE;AAC7E,OAAK,sBAAsB;AAC3B,OAAK,UAAU;GACb,SAAS;GACT,GAAG;GACJ;;CAGH,YAAqC;AACnC,SAAO,KAAK;;CAGd,UAAU,SAAkC,EAAE,EAAQ;AACpD,OAAK,UAAU,EAAE,GAAG,QAAQ;;CAG9B,IAAI,OAAe;AACjB,SAAO,KAAK;;;;;;;;;;;;;;;;;ACdhB,SAAS,kBAAkB,KAAkB;CAC3C,MAAM,uBAAO,IAAI,SAAS;AAC1B,QAAO,KAAK,UAAU,MAAM,KAAK,UAAU;AACzC,MAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAC/C,OAAI,KAAK,IAAI,MAAM,CACjB,QAAO;AAET,QAAK,IAAI,MAAM;;AAEjB,SAAO;GACP;;;;;;;;;AAUJ,SAAgB,mBAAkD,WAAiB;AAGjF,QAAO,KAAK,MAAM,kBAAkB,UAAU,CAAC;;;;;;AAOjD,SAAgB,qBAAqB,WAAwC;AAE3E,QAAO,kBADY,mBAAmB,UAAU,CACZ;;;;;;AAOtC,SAAgB,qBAAoD,WAAiB;AACnF,QAAO,mBAAmB,UAAU;;;;;ACpDtC,SAAgB,aAAa,EAC3B,cACA,cAIU;CACV,MAAM,SAAS,KAAK,QAAQ;AAC5B,KAAI,CAAC,WAEH,QAAO;AAET,QAAO,SAAS;;;;;;ACXlB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,eAAe,QAAQ,kBAAkB,KAAK;;;;;CAKtD,SAASC,kBAAgB,OAAO;EAC5B,IAAI,IAAI,OAAO;AACf,MAAI,KAAK,UAAU;AACf,OAAI,MAAM,QAAQ,MAAM,CACpB,QAAO;AACX,OAAI,UAAU,KACV,QAAO;;AAEf,SAAO;;AAEX,SAAQ,kBAAkBA;;;;CAI1B,SAASC,eAAa,OAAO;AACzB,SAAO,UAAU,QAAQ,OAAO,SAAS,YAAY,CAAC,MAAM,QAAQ,MAAM;;AAE9E,SAAQ,eAAeA;;;;;;ACvBvB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,eAAe,QAAQ,eAAe,KAAK;CAEnD,IAAI,WAAW,mEAAmE,MAAM,GAAG;CAE3F,IAAI,WAAW,EAAE;AACjB,MAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,IACjC,UAAS,SAAS,GAAG,WAAW,EAAE,IAAI;AAE1C,UAAS,IAAI,WAAW,EAAE,IAAI,SAAS,QAAQ,IAAI;AACnD,UAAS,IAAI,WAAW,EAAE,IAAI,SAAS,QAAQ,IAAI;;;;;;;;;;;;CAYnD,SAAS,aAAa,WAAW;EAE7B,IAAI,KAAK,UAAU,SAAS,IAAI;AAGhC,MAAI,UAAU,UAAU,SAAS,MAAM,IACnC,OAAM;WACD,UAAU,UAAU,SAAS,MAAM,IACxC,OAAM;EACV,IAAI,QAAQ,IAAI,WAAW,GAAG,EAAE,UAAU,GAC1C,WAAW,GACX,GACA,IAAI;AAEJ,OAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACvC,OAAI,SAAS,UAAU,WAAW,EAAE;AACpC,OAAI,MAAM,OAEN,SAAQ,UAAU,IAAlB;IACI,KAAK,IACD,YAAW;IACf,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK,IACD;IACJ,QACI,OAAM,MAAM,yBAAyB;;AAGjD,WAAQ,UAAR;IACI,KAAK;AACD,SAAI;AACJ,gBAAW;AACX;IACJ,KAAK;AACD,WAAM,aAAa,KAAK,KAAK,IAAI,OAAO;AACxC,SAAI;AACJ,gBAAW;AACX;IACJ,KAAK;AACD,WAAM,cAAc,IAAI,OAAO,KAAK,IAAI,OAAO;AAC/C,SAAI;AACJ,gBAAW;AACX;IACJ,KAAK;AACD,WAAM,cAAc,IAAI,MAAM,IAAI;AAClC,gBAAW;AACX;;;AAGZ,MAAI,YAAY,EACZ,OAAM,MAAM,yBAAyB;AACzC,SAAO,MAAM,SAAS,GAAG,QAAQ;;AAErC,SAAQ,eAAe;;;;;;CAMvB,SAAS,aAAa,OAAO;EACzB,IAAI,SAAS,IAAI,WAAW,GAC5B,GACA,IAAI;AACJ,OAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,OAAI,MAAM;AACV,WAAQ,UAAR;IACI,KAAK;AACD,eAAU,SAAS,KAAK;AACxB,UAAK,IAAI,MAAM;AACf,gBAAW;AACX;IACJ,KAAK;AACD,eAAU,SAAS,IAAI,KAAK;AAC5B,UAAK,IAAI,OAAO;AAChB,gBAAW;AACX;IACJ,KAAK;AACD,eAAU,SAAS,IAAI,KAAK;AAC5B,eAAU,SAAS,IAAI;AACvB,gBAAW;AACX;;;AAIZ,MAAI,UAAU;AACV,aAAU,SAAS;AACnB,aAAU;AACV,OAAI,YAAY,EACZ,WAAU;;AAElB,SAAO;;AAEX,SAAQ,eAAe;;;;;;AC1FvB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,WAAW,KAAK;CACxB,MAAM,iBAAiB,UAAU,OAAO,aAAa,MAAM,QAAQ,MAAM;;;;;;;;;;;;;CAazE,SAAS,SAAS,OAAO;AACrB,MAAI,MAAM,SAAS,EACf,QAAO;EACX,IAAI,MAAM,GACV,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,GAC5B;EACA,IAAI,MAAM,MAAM;AAChB,SAAO,MAAM,KAAK;AACd,OAAI,MAAM;AACV,OAAI,IAAI,IACJ,OAAM,OAAO;YACR,IAAI,OAAO,IAAI,IACpB,OAAM,QAAQ,IAAI,OAAO,IAAI,MAAM,SAAS;YACvC,IAAI,OAAO,IAAI,KAAK;AACzB,UAAM,IAAI,MAAM,MAAM,MAAM,SAAS,OAAO,MAAM,MAAM,SAAS,OAAO,IAAI,MAAM,SAAS,MAAM;AACjG,UAAM,OAAO,SAAU,KAAK;AAC5B,UAAM,OAAO,SAAU,IAAI;SAG3B,OAAM,QAAQ,IAAI,OAAO,MAAM,MAAM,SAAS,OAAO,IAAI,MAAM,SAAS;AAC5E,OAAI,IAAI,MAAM;AACV,UAAM,KAAK,cAAc,MAAM,CAAC;AAChC,QAAI;;;AAGZ,MAAI,MAAM,QAAQ;AACd,OAAI,EACA,OAAM,KAAK,cAAc,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC;AAChD,UAAO,MAAM,KAAK,GAAG;;AAEzB,SAAO,cAAc,MAAM,MAAM,GAAG,EAAE,CAAC;;AAE3C,SAAQ,WAAW;;;;;;ACzEnB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,WAAW,QAAQ,qBAAqB,QAAQ,sBAAsB,KAAK;AASnF,EAAC,SAAU,uBAAqB;;;;;AAK5B,wBAAoB,SAAS,OAAO,IAAI,sBAAsB;;;;;AAK9D,wBAAoB,UAAU,UAAU,SAAS,SAAS,UAAU,SAAS;AAEzE,IADgB,GAAG,QAAQ,GAAG,QAAQC,sBAAoB,UAAU,QAAQA,sBAAoB,UAAU,EAAE,EAClG,KAAK;IAAE,IAAI;IAAS;IAAU;IAAM,CAAC;;;;;;AAMnD,wBAAoB,WAAW,UAAU,SAAS,WAAW;AACzD,QAAK,IAAI,EAAE,IAAI,UAAU,UAAUA,sBAAoB,KAAK,QAAQ,CAChE,QAAO,IAAI,IAAI,SAAS,CAAC,IAAI,KAAK;;;;;;AAM1C,wBAAoB,QAAQ,SAAS,YAAY;AAC7C,OAAI,GAAG,QAAQ,EAAE;IACb,IAAI,MAAM,QAAQA,sBAAoB;AACtC,WAAO,UAAU,IAAI,QAAO,OAAM,GAAG,MAAM,QAAQ,GAAG;;AAE1D,UAAO,EAAE;;;;;AAKb,wBAAoB,QAAQ,SAAS,YAAYA,sBAAoB,KAAK,SAAS,QAAQ,CAAC,MAAM,GAAG,CAAC;EACtG,MAAM,MAAM,YAAY,WAAW,MAAM,QAAQ,QAAQA,sBAAoB,QAAQ;IAChE,QAAQ,wBAAwB,QAAQ,sBAAsB,EAAE,EAAE;;;;CAI3F,SAAS,mBAAmB,GAAG,GAAG;AAC9B,SAAO,OAAO,OAAO,OAAO,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE;;AAEjD,SAAQ,qBAAqB;AAU7B,EAAC,SAAU,YAAU;;;;AAIjB,aAAS,WAAS,YAAY,KAAK;;;;;AAKnC,aAAS,WAAS,WAAW,KAAK;;;;;;;;AAQlC,aAAS,WAAS,qBAAqB,KAAK;;;;;AAK5C,aAAS,WAAS,gBAAgB,KAAK;;;;;AAKvC,aAAS,WAAS,cAAc,KAAK;;;;;AAKrC,aAAS,WAAS,WAAW,KAAK;IACxB,QAAQ,aAAa,QAAQ,WAAW,EAAE,EAAE;;;;;;AClE1D,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,eAAe,QAAQ,gBAAgB,QAAQ,gBAAgB,QAAQ,kBAAkB,QAAQ,gBAAgB,QAAQ,eAAe,KAAK;;;;;;;;;;;;CAYrJ,SAAS,eAAe;EACpB,IAAI,UAAU;EACd,IAAI,WAAW;AACf,OAAK,IAAI,QAAQ,GAAG,QAAQ,IAAI,SAAS,GAAG;GACxC,IAAI,IAAI,KAAK,IAAI,KAAK;AACtB,eAAY,IAAI,QAAS;AACzB,QAAK,IAAI,QAAS,GAAG;AACjB,SAAK,cAAc;AACnB,WAAO,CAAC,SAAS,SAAS;;;EAGlC,IAAI,aAAa,KAAK,IAAI,KAAK;AAE/B,cAAY,aAAa,OAAS;AAElC,cAAY,aAAa,QAAS;AAClC,OAAK,aAAa,QAAS,GAAG;AAC1B,QAAK,cAAc;AACnB,UAAO,CAAC,SAAS,SAAS;;AAE9B,OAAK,IAAI,QAAQ,GAAG,SAAS,IAAI,SAAS,GAAG;GACzC,IAAI,IAAI,KAAK,IAAI,KAAK;AACtB,gBAAa,IAAI,QAAS;AAC1B,QAAK,IAAI,QAAS,GAAG;AACjB,SAAK,cAAc;AACnB,WAAO,CAAC,SAAS,SAAS;;;AAGlC,QAAM,IAAI,MAAM,iBAAiB;;AAErC,SAAQ,eAAe;;;;;;;;CAQvB,SAAS,cAAc,IAAI,IAAI,OAAO;AAClC,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG;GAC/B,MAAM,QAAQ,OAAO;GACrB,MAAM,UAAU,EAAG,UAAU,KAAM,KAAK,MAAM;GAC9C,MAAM,QAAQ,UAAU,QAAQ,MAAO,SAAS;AAChD,SAAM,KAAK,KAAK;AAChB,OAAI,CAAC,QACD;;EAGR,MAAM,YAAc,OAAO,KAAM,MAAU,KAAK,MAAS;EACzD,MAAM,cAAc,EAAG,MAAM,KAAM;AACnC,QAAM,MAAM,cAAc,YAAY,MAAO,aAAa,IAAK;AAC/D,MAAI,CAAC,YACD;AAEJ,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG;GAC/B,MAAM,QAAQ,OAAO;GACrB,MAAM,UAAU,EAAG,UAAU,KAAM;GACnC,MAAM,QAAQ,UAAU,QAAQ,MAAO,SAAS;AAChD,SAAM,KAAK,KAAK;AAChB,OAAI,CAAC,QACD;;AAGR,QAAM,KAAM,OAAO,KAAM,EAAK;;AAElC,SAAQ,gBAAgB;CAExB,MAAMC,mBAAkB,QAAY;;;;;;;;;;;CAWpC,SAAS,gBAAgB,KAAK;EAE1B,IAAI,QAAQ,IAAI,MAAM;AACtB,MAAI,MACA,OAAM,IAAI,MAAM,EAAE;EAItB,MAAM,OAAO;EACb,IAAI,UAAU;EACd,IAAI,WAAW;EACf,SAAS,YAAY,OAAO,KAAK;GAE7B,MAAM,WAAW,OAAO,IAAI,MAAM,OAAO,IAAI,CAAC;AAC9C,eAAY;AACZ,aAAU,UAAU,OAAO;AAE3B,OAAI,WAAWA,kBAAgB;AAC3B,eAAW,YAAa,UAAUA,mBAAkB;AACpD,cAAU,UAAUA;;;AAG5B,cAAY,KAAK,IAAI;AACrB,cAAY,KAAK,IAAI;AACrB,cAAY,KAAK,GAAG;AACpB,cAAY,GAAG;AACf,SAAO;GAAC;GAAO;GAAS;GAAS;;AAErC,SAAQ,kBAAkB;;;;;;CAM1B,SAAS,cAAc,SAAS,UAAU;AAGtC,MAAK,aAAa,KAAM,QACpB,QAAO,MAAMA,mBAAiB,YAAY,YAAY;EAW1D,IAAI,MAAM,UAAU;EACpB,IAAI,OAAS,YAAY,KAAO,YAAY,OAAQ,IAAK;EACzD,IAAI,OAAQ,YAAY,KAAM;EAI9B,IAAI,SAAS,MAAO,MAAM,UAAY,OAAO;EAC7C,IAAI,SAAS,MAAO,OAAO;EAC3B,IAAI,SAAU,OAAO;EAErB,IAAI,OAAO;AACX,MAAI,UAAU,MAAM;AAChB,aAAU,KAAK,MAAM,SAAS,KAAK;AACnC,aAAU;;AAEd,MAAI,UAAU,MAAM;AAChB,aAAU,KAAK,MAAM,SAAS,KAAK;AACnC,aAAU;;EAGd,SAAS,eAAe,UAAU,kBAAkB;GAChD,IAAI,UAAU,WAAW,OAAO,SAAS,GAAG;AAC5C,OAAI,iBACA,QAAO,UAAU,MAAM,QAAQ,OAAO,GAAG;AAE7C,UAAO;;AAEX,SAAO,eAAe,QAA8B,EAAE,GAClD,eAAe,QAA8B,OAAO,GAGpD,eAAe,QAA8B,EAAE;;AAEvD,SAAQ,gBAAgB;;;;;;;;CAQxB,SAAS,cAAc,OAAO,OAAO;AACjC,MAAI,SAAS,GAAG;AAEZ,UAAO,QAAQ,KAAM;AACjB,UAAM,KAAM,QAAQ,MAAQ,IAAK;AACjC,YAAQ,UAAU;;AAEtB,SAAM,KAAK,MAAM;SAEhB;AACD,QAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;AACxB,UAAM,KAAK,QAAQ,MAAM,IAAI;AAC7B,YAAQ,SAAS;;AAErB,SAAM,KAAK,EAAE;;;AAGrB,SAAQ,gBAAgB;;;;;;CAMxB,SAAS,eAAe;EACpB,IAAI,IAAI,KAAK,IAAI,KAAK;EACtB,IAAI,SAAS,IAAI;AACjB,OAAK,IAAI,QAAS,GAAG;AACjB,QAAK,cAAc;AACnB,UAAO;;AAEX,MAAI,KAAK,IAAI,KAAK;AAClB,aAAW,IAAI,QAAS;AACxB,OAAK,IAAI,QAAS,GAAG;AACjB,QAAK,cAAc;AACnB,UAAO;;AAEX,MAAI,KAAK,IAAI,KAAK;AAClB,aAAW,IAAI,QAAS;AACxB,OAAK,IAAI,QAAS,GAAG;AACjB,QAAK,cAAc;AACnB,UAAO;;AAEX,MAAI,KAAK,IAAI,KAAK;AAClB,aAAW,IAAI,QAAS;AACxB,OAAK,IAAI,QAAS,GAAG;AACjB,QAAK,cAAc;AACnB,UAAO;;AAGX,MAAI,KAAK,IAAI,KAAK;AAClB,aAAW,IAAI,OAAS;AACxB,OAAK,IAAI,YAAY,IAAK,IAAI,SAAU,KAAM,YAAY,IAAI,YAC1D,KAAI,KAAK,IAAI,KAAK;AACtB,OAAK,IAAI,QAAS,EACd,OAAM,IAAI,MAAM,iBAAiB;AACrC,OAAK,cAAc;AAEnB,SAAO,WAAW;;AAEtB,SAAQ,eAAe;;;;;;AChRvB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,SAAS,QAAQ,UAAU,QAAQ,WAAW,KAAK;CAC3D,MAAMC;CACN,IAAI;CACJ,SAAS,WAAW;EAChB,MAAM,qBAAK,IAAI,yBAAS,IAAI,YAAY,EAAE,CAAC;AAM3C,OALW,WAAW,WAAW,UAC1B,OAAO,GAAG,gBAAgB,cAC1B,OAAO,GAAG,iBAAiB,cAC3B,OAAO,GAAG,gBAAgB,cAC1B,OAAO,GAAG,iBAAiB,aACxB;GACN,KAAK,OAAO,uBAAuB;GACnC,KAAK,OAAO,sBAAsB;GAClC,MAAM,OAAO,IAAI;GACjB,MAAM,OAAO,uBAAuB;GACpC,GAAG;GACH,GAAG;GACN,GAAG;;AAER,SAAQ,WAAW;AACnB,WAAU;CACV,SAAS,SAAS,IAAI;AAClB,MAAI,CAAC,GACD,OAAM,IAAI,MAAM,wGAAwG;;CAGhI,MAAM,iBAAiB;CAEvB,MAAM,iBAAiB;CACvB,MAAM,gBAAgB;CAEtB,IAAM,eAAN,MAAmB;;;;EAIf,YAAY,IAAI,IAAI;AAChB,QAAK,KAAK,KAAK;AACf,QAAK,KAAK,KAAK;;;;;EAKnB,SAAS;AACL,UAAO,KAAK,MAAM,KAAK,KAAK,MAAM;;;;;EAKtC,WAAW;GACP,IAAI,SAAS,KAAK,KAAK,kBAAkB,KAAK,OAAO;AACrD,OAAI,CAAC,OAAO,cAAc,OAAO,CAC7B,OAAM,IAAI,MAAM,gCAAgC;AACpD,UAAO;;;;;;;CAOf,IAAM,UAAN,MAAM,gBAAgB,aAAa;;;;EAI/B,OAAO,KAAK,OAAO;AACf,OAAI,GAEA,SAAQ,OAAO,OAAf;IACI,KAAK;AACD,SAAI,SAAS,IACT,QAAO,KAAK;AAChB,SAAI,SAAS,GACT,OAAM,IAAI,MAAM,uBAAuB;AAC3C,aAAQ,GAAG,EAAE,MAAM;IACvB,KAAK;AACD,SAAI,UAAU,EACV,QAAO,KAAK;AAChB,aAAQ,GAAG,EAAE,MAAM;IACvB,KAAK;AACD,SAAI,CAAC,MACD,QAAO,KAAK;AAChB,SAAI,QAAQ,GAAG,KACX,OAAM,IAAI,MAAM,yBAAyB;AAC7C,SAAI,QAAQ,GAAG,KACX,OAAM,IAAI,MAAM,kBAAkB;AACtC,QAAG,EAAE,aAAa,GAAG,OAAO,KAAK;AACjC,YAAO,IAAI,QAAQ,GAAG,EAAE,SAAS,GAAG,KAAK,EAAE,GAAG,EAAE,SAAS,GAAG,KAAK,CAAC;;OAG1E,SAAQ,OAAO,OAAf;IACI,KAAK;AACD,SAAI,SAAS,IACT,QAAO,KAAK;AAChB,aAAQ,MAAM,MAAM;AACpB,SAAI,CAAC,eAAe,KAAK,MAAM,CAC3B,OAAM,IAAI,MAAM,uBAAuB;KAC3C,IAAI,CAAC,OAAO,IAAI,MAAMA,gBAAc,gBAAgB,MAAM;AAC1D,SAAI,MACA,OAAM,IAAI,MAAM,yBAAyB;AAC7C,YAAO,IAAI,QAAQ,IAAI,GAAG;IAC9B,KAAK;AACD,SAAI,SAAS,EACT,QAAO,KAAK;AAChB,SAAI,CAAC,OAAO,cAAc,MAAM,CAC5B,OAAM,IAAI,MAAM,uBAAuB;AAC3C,SAAI,QAAQ,EACR,OAAM,IAAI,MAAM,yBAAyB;AAC7C,YAAO,IAAI,QAAQ,OAAO,QAAQ,eAAe;;AAE7D,SAAM,IAAI,MAAM,mBAAmB,OAAO,MAAM;;;;;EAKpD,WAAW;AACP,UAAO,KAAK,KAAK,UAAU,CAAC,UAAU,GAAGA,gBAAc,cAAc,KAAK,IAAI,KAAK,GAAG;;;;;EAK1F,WAAW;AACP,YAAS,GAAG;AACZ,MAAG,EAAE,SAAS,GAAG,KAAK,IAAI,KAAK;AAC/B,MAAG,EAAE,SAAS,GAAG,KAAK,IAAI,KAAK;AAC/B,UAAO,GAAG,EAAE,aAAa,GAAG,KAAK;;;AAGzC,SAAQ,UAAU;;;;AAIlB,SAAQ,OAAO,IAAI,QAAQ,GAAG,EAAE;;;;;CAKhC,IAAMC,WAAN,MAAMA,iBAAe,aAAa;;;;EAI9B,OAAO,KAAK,OAAO;AACf,OAAI,GAEA,SAAQ,OAAO,OAAf;IACI,KAAK;AACD,SAAI,SAAS,IACT,QAAO,KAAK;AAChB,SAAI,SAAS,GACT,OAAM,IAAI,MAAM,uBAAuB;AAC3C,aAAQ,GAAG,EAAE,MAAM;IACvB,KAAK;AACD,SAAI,UAAU,EACV,QAAO,KAAK;AAChB,aAAQ,GAAG,EAAE,MAAM;IACvB,KAAK;AACD,SAAI,CAAC,MACD,QAAO,KAAK;AAChB,SAAI,QAAQ,GAAG,IACX,OAAM,IAAI,MAAM,wBAAwB;AAC5C,SAAI,QAAQ,GAAG,IACX,OAAM,IAAI,MAAM,wBAAwB;AAC5C,QAAG,EAAE,YAAY,GAAG,OAAO,KAAK;AAChC,YAAO,IAAIA,SAAO,GAAG,EAAE,SAAS,GAAG,KAAK,EAAE,GAAG,EAAE,SAAS,GAAG,KAAK,CAAC;;OAGzE,SAAQ,OAAO,OAAf;IACI,KAAK;AACD,SAAI,SAAS,IACT,QAAO,KAAK;AAChB,aAAQ,MAAM,MAAM;AACpB,SAAI,CAAC,eAAe,KAAK,MAAM,CAC3B,OAAM,IAAI,MAAM,uBAAuB;KAC3C,IAAI,CAAC,OAAO,IAAI,MAAMD,gBAAc,gBAAgB,MAAM;AAC1D,SAAI,OACA;UAAI,KAAK,iBAAkB,MAAM,iBAAiB,MAAM,EACpD,OAAM,IAAI,MAAM,wBAAwB;gBAEvC,MAAM,cACX,OAAM,IAAI,MAAM,wBAAwB;KAC5C,IAAI,MAAM,IAAIC,SAAO,IAAI,GAAG;AAC5B,YAAO,QAAQ,IAAI,QAAQ,GAAG;IAClC,KAAK;AACD,SAAI,SAAS,EACT,QAAO,KAAK;AAChB,SAAI,CAAC,OAAO,cAAc,MAAM,CAC5B,OAAM,IAAI,MAAM,uBAAuB;AAC3C,YAAO,QAAQ,IACT,IAAIA,SAAO,OAAO,QAAQ,eAAe,GACzC,IAAIA,SAAO,CAAC,OAAO,CAAC,QAAQ,eAAe,CAAC,QAAQ;;AAEtE,SAAM,IAAI,MAAM,mBAAmB,OAAO,MAAM;;;;;EAKpD,aAAa;AACT,WAAQ,KAAK,KAAK,mBAAmB;;;;;;EAMzC,SAAS;GACL,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,KAAK;AAC7B,OAAI,GACA,MAAK,CAAC,KAAK;OAEX,OAAM;AACV,UAAO,IAAIA,SAAO,IAAI,GAAG;;;;;EAK7B,WAAW;AACP,OAAI,GACA,QAAO,KAAK,UAAU,CAAC,UAAU;AACrC,OAAI,KAAK,YAAY,EAAE;IACnB,IAAI,IAAI,KAAK,QAAQ;AACrB,WAAO,MAAMD,gBAAc,cAAc,EAAE,IAAI,EAAE,GAAG;;AAExD,UAAOA,gBAAc,cAAc,KAAK,IAAI,KAAK,GAAG;;;;;EAKxD,WAAW;AACP,YAAS,GAAG;AACZ,MAAG,EAAE,SAAS,GAAG,KAAK,IAAI,KAAK;AAC/B,MAAG,EAAE,SAAS,GAAG,KAAK,IAAI,KAAK;AAC/B,UAAO,GAAG,EAAE,YAAY,GAAG,KAAK;;;AAGxC,SAAQ,SAASC;;;;AAIjB,UAAO,OAAO,IAAIA,SAAO,GAAG,EAAE;;;;;;AC5O9B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,eAAe,QAAQ,oBAAoB,KAAK;CACxD,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC,iBAAe;EACjB,kBAAkB;EAClB,gBAAe,UAAS,IAAI,aAAa,MAAM;EAClD;;;;CAID,SAAS,kBAAkB,SAAS;AAChC,SAAO,UAAU,OAAO,OAAO,OAAO,OAAO,EAAE,EAAEA,eAAa,EAAE,QAAQ,GAAGA;;AAE/E,SAAQ,oBAAoB;CAC5B,IAAM,eAAN,MAAmB;EACf,YAAY,KAAK,aAAa;AAC1B,QAAK,WAAWD,gBAAc;;;;AAI9B,QAAK,SAASA,gBAAc;AAC5B,QAAK,MAAM;AACX,QAAK,MAAM,IAAI;AACf,QAAK,MAAM;AACX,QAAK,OAAO,IAAI,SAAS,IAAI,QAAQ,IAAI,YAAY,IAAI,WAAW;AACpE,QAAK,cAAc,gBAAgB,QAAQ,gBAAgB,KAAK,IAAI,cAAc,IAAI,YAAY,SAAS;IACvG,OAAO;IACP,WAAW;IACd,CAAC;;;;;EAKN,MAAM;GACF,IAAI,MAAM,KAAK,QAAQ,EAAE,UAAU,QAAQ,GAAG,WAAW,MAAM;AAC/D,OAAI,WAAW,KAAK,WAAW,KAAK,WAAW,EAC3C,OAAM,IAAI,MAAM,2BAA2B,UAAU,gBAAgB,SAAS;AAClF,UAAO,CAAC,SAAS,SAAS;;;;;;EAM9B,KAAK,UAAU;GACX,IAAI,QAAQ,KAAK;AAEjB,WAAQ,UAAR;IACI,KAAKF,2BAAyB,SAAS;AACnC,YAAO,KAAK,IAAI,KAAK,SAAS;AAG9B;IACJ,KAAKA,2BAAyB,SAAS,MACnC,MAAK,OAAO;IAChB,KAAKA,2BAAyB,SAAS;AACnC,UAAK,OAAO;AACZ;IACJ,KAAKA,2BAAyB,SAAS;KACnC,IAAI,MAAM,KAAK,QAAQ;AACvB,UAAK,OAAO;AACZ;IACJ,KAAKA,2BAAyB,SAAS;KAGnC,IAAI;AACJ,aAAQ,IAAI,KAAK,KAAK,CAAC,QAAQA,2BAAyB,SAAS,SAC7D,MAAK,KAAK,EAAE;AAEhB;IACJ,QACI,OAAM,IAAI,MAAM,yBAAyB,SAAS;;AAE1D,QAAK,cAAc;AACnB,UAAO,KAAK,IAAI,SAAS,OAAO,KAAK,IAAI;;;;;EAK7C,eAAe;AACX,OAAI,KAAK,MAAM,KAAK,IAChB,OAAM,IAAI,WAAW,gBAAgB;;;;;EAK7C,QAAQ;AACJ,UAAO,KAAK,QAAQ,GAAG;;;;;EAK3B,SAAS;GACL,IAAI,MAAM,KAAK,QAAQ;AAEvB,UAAQ,QAAQ,IAAK,EAAE,MAAM;;;;;EAKjC,QAAQ;AACJ,UAAO,IAAIC,YAAU,OAAO,GAAG,KAAK,UAAU,CAAC;;;;;EAKnD,SAAS;AACL,UAAO,IAAIA,YAAU,QAAQ,GAAG,KAAK,UAAU,CAAC;;;;;EAKpD,SAAS;GACL,IAAI,CAAC,IAAI,MAAM,KAAK,UAAU;GAE9B,IAAI,IAAI,EAAE,KAAK;AACf,SAAO,OAAO,KAAK,KAAK,MAAM,MAAM;AACpC,QAAM,OAAO,IAAI;AACjB,UAAO,IAAIA,YAAU,OAAO,IAAI,GAAG;;;;;EAKvC,OAAO;GACH,IAAI,CAAC,IAAI,MAAM,KAAK,UAAU;AAC9B,UAAO,OAAO,KAAK,OAAO;;;;;EAK9B,UAAU;AACN,UAAO,KAAK,KAAK,WAAW,KAAK,OAAO,KAAK,GAAG,KAAK;;;;;EAKzD,WAAW;AACP,UAAO,KAAK,KAAK,UAAU,KAAK,OAAO,KAAK,GAAG,KAAK;;;;;EAKxD,UAAU;AACN,UAAO,IAAIA,YAAU,QAAQ,KAAK,UAAU,EAAE,KAAK,UAAU,CAAC;;;;;EAKlE,WAAW;AACP,UAAO,IAAIA,YAAU,OAAO,KAAK,UAAU,EAAE,KAAK,UAAU,CAAC;;;;;EAKjE,QAAQ;AACJ,UAAO,KAAK,KAAK,YAAY,KAAK,OAAO,KAAK,GAAG,KAAK;;;;;EAK1D,SAAS;AACL,UAAO,KAAK,KAAK,YAAY,KAAK,OAAO,KAAK,GAAG,KAAK;;;;;EAK1D,QAAQ;GACJ,IAAI,MAAM,KAAK,QAAQ;GACvB,IAAI,QAAQ,KAAK;AACjB,QAAK,OAAO;AACZ,QAAK,cAAc;AACnB,UAAO,KAAK,IAAI,SAAS,OAAO,QAAQ,IAAI;;;;;EAKhD,SAAS;AACL,UAAO,KAAK,YAAY,OAAO,KAAK,OAAO,CAAC;;;AAGpD,SAAQ,eAAe;;;;;;ACrLvB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,gBAAgB,QAAQ,eAAe,QAAQ,cAAc,QAAQ,cAAc,QAAQ,SAAS,KAAK;;;;CAIjH,SAAS,OAAO,WAAW,KAAK;AAC5B,MAAI,CAAC,UACD,OAAM,IAAI,MAAM,IAAI;;AAG5B,SAAQ,SAAS;;;;CAIjB,SAAS,YAAY,OAAO,KAAK;AAC7B,QAAM,IAAI,MAAM,QAAQ,QAAQ,QAAQ,KAAK,IAAI,MAAM,wBAAwB,MAAM;;AAEzF,SAAQ,cAAc;CACtB,MAAM,cAAc,sBAAwB,cAAc,uBAAyB,aAAa,YAAY,YAAY,YAAY,YAAY;CAChJ,SAAS,YAAY,KAAK;AACtB,MAAI,OAAO,QAAQ,SACf,OAAM,IAAI,MAAM,qBAAqB,OAAO,IAAI;AACpD,MAAI,CAAC,OAAO,UAAU,IAAI,IAAI,MAAM,aAAa,MAAM,UACnD,OAAM,IAAI,MAAM,qBAAqB,IAAI;;AAEjD,SAAQ,cAAc;CACtB,SAAS,aAAa,KAAK;AACvB,MAAI,OAAO,QAAQ,SACf,OAAM,IAAI,MAAM,sBAAsB,OAAO,IAAI;AACrD,MAAI,CAAC,OAAO,UAAU,IAAI,IAAI,MAAM,cAAc,MAAM,EACpD,OAAM,IAAI,MAAM,sBAAsB,IAAI;;AAElD,SAAQ,eAAe;CACvB,SAAS,cAAc,KAAK;AACxB,MAAI,OAAO,QAAQ,SACf,OAAM,IAAI,MAAM,uBAAuB,OAAO,IAAI;AACtD,MAAI,CAAC,OAAO,SAAS,IAAI,CACrB;AACJ,MAAI,MAAM,eAAe,MAAM,YAC3B,OAAM,IAAI,MAAM,uBAAuB,IAAI;;AAEnD,SAAQ,gBAAgB;;;;;;ACzCxB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,eAAe,QAAQ,qBAAqB,KAAK;CACzD,MAAMG;CACN,MAAM;CACN,MAAMC;CACN,MAAMC,kBAAgB;EAClB,oBAAoB;EACpB,qBAAqB,IAAI,cAAc;EAC1C;;;;CAID,SAAS,mBAAmB,SAAS;AACjC,SAAO,UAAU,OAAO,OAAO,OAAO,OAAO,EAAE,EAAEA,gBAAc,EAAE,QAAQ,GAAGA;;AAEhF,SAAQ,qBAAqB;CAC7B,IAAM,eAAN,MAAmB;EACf,YAAY,aAAa;;;;AAIrB,QAAK,QAAQ,EAAE;AACf,QAAK,cAAc,gBAAgB,QAAQ,gBAAgB,KAAK,IAAI,cAAc,IAAI,aAAa;AACnG,QAAK,SAAS,EAAE;AAChB,QAAK,MAAM,EAAE;;;;;EAKjB,SAAS;AACL,QAAK,OAAO,KAAK,IAAI,WAAW,KAAK,IAAI,CAAC;GAC1C,IAAI,MAAM;AACV,QAAK,IAAI,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,IACpC,QAAO,KAAK,OAAO,GAAG;GAC1B,IAAI,QAAQ,IAAI,WAAW,IAAI;GAC/B,IAAI,SAAS;AACb,QAAK,IAAI,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,KAAK;AACzC,UAAM,IAAI,KAAK,OAAO,IAAI,OAAO;AACjC,cAAU,KAAK,OAAO,GAAG;;AAE7B,QAAK,SAAS,EAAE;AAChB,UAAO;;;;;;;;EAQX,OAAO;AACH,QAAK,MAAM,KAAK;IAAE,QAAQ,KAAK;IAAQ,KAAK,KAAK;IAAK,CAAC;AACvD,QAAK,SAAS,EAAE;AAChB,QAAK,MAAM,EAAE;AACb,UAAO;;;;;;EAMX,OAAO;GAEH,IAAI,QAAQ,KAAK,QAAQ;GAEzB,IAAI,OAAO,KAAK,MAAM,KAAK;AAC3B,OAAI,CAAC,KACD,OAAM,IAAI,MAAM,kCAAkC;AACtD,QAAK,SAAS,KAAK;AACnB,QAAK,MAAM,KAAK;AAEhB,QAAK,OAAO,MAAM,WAAW;AAC7B,UAAO,KAAK,IAAI,MAAM;;;;;;;;;EAS1B,IAAI,SAAS,MAAM;AACf,UAAO,KAAK,QAAQ,WAAW,IAAI,UAAU,EAAE;;;;;EAKnD,IAAI,OAAO;AACP,OAAI,KAAK,IAAI,QAAQ;AACjB,SAAK,OAAO,KAAK,IAAI,WAAW,KAAK,IAAI,CAAC;AAC1C,SAAK,MAAM,EAAE;;AAEjB,QAAK,OAAO,KAAK,MAAM;AACvB,UAAO;;;;;EAKX,OAAO,OAAO;AACV,cAAS,aAAa,MAAM;AAE5B,UAAO,QAAQ,KAAM;AACjB,SAAK,IAAI,KAAM,QAAQ,MAAQ,IAAK;AACpC,YAAQ,UAAU;;AAEtB,QAAK,IAAI,KAAK,MAAM;AACpB,UAAO;;;;;EAKX,MAAM,OAAO;AACT,cAAS,YAAY,MAAM;AAC3B,iBAAc,cAAc,OAAO,KAAK,IAAI;AAC5C,UAAO;;;;;EAKX,KAAK,OAAO;AACR,QAAK,IAAI,KAAK,QAAQ,IAAI,EAAE;AAC5B,UAAO;;;;;EAKX,MAAM,OAAO;AACT,QAAK,OAAO,MAAM,WAAW;AAC7B,UAAO,KAAK,IAAI,MAAM;;;;;EAK1B,OAAO,OAAO;GACV,IAAI,QAAQ,KAAK,YAAY,OAAO,MAAM;AAC1C,QAAK,OAAO,MAAM,WAAW;AAC7B,UAAO,KAAK,IAAI,MAAM;;;;;EAK1B,MAAM,OAAO;AACT,cAAS,cAAc,MAAM;GAC7B,IAAI,QAAQ,IAAI,WAAW,EAAE;AAC7B,OAAI,SAAS,MAAM,OAAO,CAAC,WAAW,GAAG,OAAO,KAAK;AACrD,UAAO,KAAK,IAAI,MAAM;;;;;EAK1B,OAAO,OAAO;GACV,IAAI,QAAQ,IAAI,WAAW,EAAE;AAC7B,OAAI,SAAS,MAAM,OAAO,CAAC,WAAW,GAAG,OAAO,KAAK;AACrD,UAAO,KAAK,IAAI,MAAM;;;;;EAK1B,QAAQ,OAAO;AACX,cAAS,aAAa,MAAM;GAC5B,IAAI,QAAQ,IAAI,WAAW,EAAE;AAC7B,OAAI,SAAS,MAAM,OAAO,CAAC,UAAU,GAAG,OAAO,KAAK;AACpD,UAAO,KAAK,IAAI,MAAM;;;;;EAK1B,SAAS,OAAO;AACZ,cAAS,YAAY,MAAM;GAC3B,IAAI,QAAQ,IAAI,WAAW,EAAE;AAC7B,OAAI,SAAS,MAAM,OAAO,CAAC,SAAS,GAAG,OAAO,KAAK;AACnD,UAAO,KAAK,IAAI,MAAM;;;;;EAK1B,OAAO,OAAO;AACV,cAAS,YAAY,MAAM;AAE3B,YAAU,SAAS,IAAM,SAAS,QAAS;AAC3C,iBAAc,cAAc,OAAO,KAAK,IAAI;AAC5C,UAAO;;;;;EAKX,SAAS,OAAO;GACZ,IAAI,QAAQ,IAAI,WAAW,EAAE;GAC7B,IAAI,OAAO,IAAI,SAAS,MAAM,OAAO;GACrC,IAAI,OAAOF,YAAU,OAAO,KAAK,MAAM;AACvC,QAAK,SAAS,GAAG,KAAK,IAAI,KAAK;AAC/B,QAAK,SAAS,GAAG,KAAK,IAAI,KAAK;AAC/B,UAAO,KAAK,IAAI,MAAM;;;;;EAK1B,QAAQ,OAAO;GACX,IAAI,QAAQ,IAAI,WAAW,EAAE;GAC7B,IAAI,OAAO,IAAI,SAAS,MAAM,OAAO;GACrC,IAAI,OAAOA,YAAU,QAAQ,KAAK,MAAM;AACxC,QAAK,SAAS,GAAG,KAAK,IAAI,KAAK;AAC/B,QAAK,SAAS,GAAG,KAAK,IAAI,KAAK;AAC/B,UAAO,KAAK,IAAI,MAAM;;;;;EAK1B,MAAM,OAAO;GACT,IAAI,OAAOA,YAAU,OAAO,KAAK,MAAM;AACvC,iBAAc,cAAc,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI;AACvD,UAAO;;;;;EAKX,OAAO,OAAO;GACV,IAAI,OAAOA,YAAU,OAAO,KAAK,MAAM,EAEvC,OAAO,KAAK,MAAM,IAAI,KAAM,KAAK,MAAM,IAAK,MAAM,MAAO,KAAK,MAAM,IAAM,KAAK,OAAO,MAAO;AAC7F,iBAAc,cAAc,IAAI,IAAI,KAAK,IAAI;AAC7C,UAAO;;;;;EAKX,OAAO,OAAO;GACV,IAAI,OAAOA,YAAU,QAAQ,KAAK,MAAM;AACxC,iBAAc,cAAc,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI;AACvD,UAAO;;;AAGf,SAAQ,eAAe;;;;;;ACtOvB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,mBAAmB,QAAQ,mBAAmB,QAAQ,kBAAkB,KAAK;CACrF,MAAM,gBAAgB;EAClB,mBAAmB;EACnB,eAAe;EACf,mBAAmB;EACnB,cAAc;EACjB,EAAE,eAAe,EACd,qBAAqB,OACxB;;;;CAID,SAAS,gBAAgB,SAAS;AAC9B,SAAO,UAAU,OAAO,OAAO,OAAO,OAAO,EAAE,EAAE,aAAa,EAAE,QAAQ,GAAG;;AAE/E,SAAQ,kBAAkB;;;;CAI1B,SAAS,iBAAiB,SAAS;AAC/B,SAAO,UAAU,OAAO,OAAO,OAAO,OAAO,EAAE,EAAE,cAAc,EAAE,QAAQ,GAAG;;AAEhF,SAAQ,mBAAmB;;;;CAI3B,SAAS,iBAAiB,GAAG,GAAG;EAC5B,IAAI,IAAI;EACR,IAAI,IAAI,OAAO,OAAO,OAAO,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9C,IAAE,eAAe,CAAC,IAAK,KAAK,MAAM,QAAQ,MAAM,KAAK,IAAI,KAAK,IAAI,EAAE,kBAAkB,QAAQ,OAAO,KAAK,IAAI,KAAK,EAAE,EAAG,IAAK,KAAK,MAAM,QAAQ,MAAM,KAAK,IAAI,KAAK,IAAI,EAAE,kBAAkB,QAAQ,OAAO,KAAK,IAAI,KAAK,EAAE,CAAE;AAC7N,SAAO;;AAEX,SAAQ,mBAAmB;;;;;;ACjC3B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,eAAe,KAAK;;;;;;;AAO5B,SAAQ,eAAe,OAAO,IAAI,2BAA2B;;;;;;ACR7D,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,iBAAiB,KAAK;;;;;;;CAO9B,SAAS,eAAe,WAAW;EAC/B,IAAI,UAAU;EACd,MAAM,KAAK,EAAE;AACb,OAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;GACvC,IAAI,OAAO,UAAU,OAAO,EAAE;AAC9B,OAAI,QAAQ,IACR,WAAU;YAEL,KAAK,KAAK,KAAK,EAAE;AACtB,OAAG,KAAK,KAAK;AACb,cAAU;cAEL,SAAS;AACd,OAAG,KAAK,KAAK,aAAa,CAAC;AAC3B,cAAU;cAEL,KAAK,EACV,IAAG,KAAK,KAAK,aAAa,CAAC;OAG3B,IAAG,KAAK,KAAK;;AAGrB,SAAO,GAAG,KAAK,GAAG;;AAEtB,SAAQ,iBAAiB;;;;;;ACjCzB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,oBAAoB,QAAQ,kBAAkB,QAAQ,mBAAmB,QAAQ,qBAAqB,QAAQ,aAAa,QAAQ,WAAW,QAAQ,aAAa,KAAK;CAChL,MAAMG;AAON,EAAC,SAAU,YAAY;AAGnB,aAAW,WAAW,YAAY,KAAK;AACvC,aAAW,WAAW,WAAW,KAAK;AAGtC,aAAW,WAAW,WAAW,KAAK;AACtC,aAAW,WAAW,YAAY,KAAK;AAGvC,aAAW,WAAW,WAAW,KAAK;AACtC,aAAW,WAAW,aAAa,KAAK;AACxC,aAAW,WAAW,aAAa,KAAK;AACxC,aAAW,WAAW,UAAU,KAAK;AACrC,aAAW,WAAW,YAAY,KAAK;AAQvC,aAAW,WAAW,WAAW,MAAM;AACvC,aAAW,WAAW,YAAY,MAAM;AAExC,aAAW,WAAW,cAAc,MAAM;AAC1C,aAAW,WAAW,cAAc,MAAM;AAC1C,aAAW,WAAW,YAAY,MAAM;AACxC,aAAW,WAAW,YAAY,MAAM;IAC5B,QAAQ,eAAe,QAAQ,aAAa,EAAE,EAAE;AAmBhE,EAAC,SAAU,UAAU;;;;;;AAMjB,WAAS,SAAS,YAAY,KAAK;;;;;;AAMnC,WAAS,SAAS,YAAY,KAAK;;;;;;;;AAQnC,WAAS,SAAS,YAAY,KAAK;IACzB,QAAQ,aAAa,QAAQ,WAAW,EAAE,EAAE;;;;;;;;;;;;;;;;CAgB1D,IAAI;AACJ,EAAC,SAAU,cAAY;;;;AAInB,eAAW,aAAW,QAAQ,KAAK;;;;;AAKnC,eAAW,aAAW,YAAY,KAAK;;;;;AAKvC,eAAW,aAAW,cAAc,KAAK;IAC1C,aAAa,QAAQ,eAAe,QAAQ,aAAa,EAAE,EAAE;;;;CAIhE,SAAS,mBAAmB,OAAO;EAC/B,IAAI,IAAI,IAAI,IAAI;AAChB,QAAM,aAAa,KAAK,MAAM,eAAe,QAAQ,OAAO,KAAK,IAAI,KAAKA,qBAAmB,eAAe,MAAM,KAAK;AACvH,QAAM,YAAY,KAAK,MAAM,cAAc,QAAQ,OAAO,KAAK,IAAI,KAAKA,qBAAmB,eAAe,MAAM,KAAK;AACrH,QAAM,UAAU,KAAK,MAAM,YAAY,QAAQ,OAAO,KAAK,IAAI,KAAK,WAAW;AAC/E,QAAM,OAAO,KAAK,MAAM,SAAS,QAAQ,OAAO,KAAK,IAAI,KAAM,MAAM,SAAS,QAAQ,MAAM,QAAQ,QAAQ,MAAM,QAAQ;AAC1H,SAAO;;AAEX,SAAQ,qBAAqB;;;;;;CAM7B,SAAS,iBAAiB,aAAa,WAAW,eAAe,eAAe;EAC5E,IAAI;EACJ,MAAM,WAAW,KAAK,YAAY,OAAO,MAAM,GAAG,MAAM,EAAE,aAAa,aAAa,KAAK,UAAU,MAAM,QAAQ,OAAO,KAAK,IAAI,KAAK,IAAI,GAAG;AAC7I,SAAO,WAAW,QAAQ,iBAAiB,cAAc,SAAS,QAAQ,eAAe,GAAG;;AAEhG,SAAQ,mBAAmB;CAC3B,SAAS,gBAAgB,aAAa,WAAW,eAAe,eAAe;EAC3E,IAAI;EACJ,MAAM,WAAW,KAAK,YAAY,OAAO,MAAM,GAAG,MAAM,EAAE,aAAa,aAAa,KAAK,UAAU,MAAM,QAAQ,OAAO,KAAK,IAAI,KAAK,IAAI,GAAG;AAC7I,MAAI,CAAC,QACD;EAEJ,MAAM,YAAY,QAAQ;AAC1B,MAAI,cAAc,OACd,QAAO;AAEX,SAAO,gBAAgB,cAAc,SAAS,UAAU,GAAG;;AAE/D,SAAQ,kBAAkB;CAC1B,SAAS,kBAAkB,aAAa,eAAe,eAAe;EAElE,MAAM,YADU,YAAY,QACF;AAC1B,MAAI,cAAc,OACd,QAAO;AAEX,SAAO,gBAAgB,cAAc,SAAS,UAAU,GAAG;;AAE/D,SAAQ,oBAAoB;;;;;;AC5J5B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,wBAAwB,QAAQ,kBAAkB,QAAQ,uBAAuB,QAAQ,gBAAgB,QAAQ,gBAAgB,QAAQ,eAAe,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BrK,SAAS,aAAa,KAAK;AACvB,MAAI,OAAO,OAAO,YAAY,QAAQ,QAAQ,CAAC,IAAI,eAAe,YAAY,CAC1E,QAAO;AAEX,UAAQ,OAAO,IAAI,WAAnB;GACI,KAAK;AACD,QAAI,IAAI,IAAI,eAAe,OACvB,QAAO;AACX,WAAO,OAAO,KAAK,IAAI,CAAC,UAAU;GACtC,KAAK,YACD,QAAO,OAAO,KAAK,IAAI,CAAC,UAAU;GACtC,QACI,QAAO;;;AAGnB,SAAQ,eAAe;;;;CAIvB,SAAS,cAAc,OAAO,MAAM;AAChC,SAAO,MAAM;;AAEjB,SAAQ,gBAAgB;CACxB,SAAS,cAAc,OAAO,MAAM,OAAO;AACvC,MAAI,MAAM,cAAc,OACpB,QAAO,MAAM,MAAM;AAEvB,QAAM,YAAY;AAClB,MAAI,UAAU,OACV,OAAM,QAAQ;;AAGtB,SAAQ,gBAAgB;CACxB,SAAS,qBAAqB,OAAO,MAAM,OAAO;AAC9C,MAAI,MAAM,cAAc,OACpB,QAAO,MAAM,MAAM;AAEvB,QAAM,YAAY;AAClB,MAAI,UAAU,UAAa,SAAS,OAChC,OAAM,QAAQ;;AAGtB,SAAQ,uBAAuB;;;;;;;;;;;CAW/B,SAAS,gBAAgB,OAAO;AAC5B,MAAI,MAAM,cAAc,OACpB,QAAO,MAAM,MAAM;AAEvB,QAAM,YAAY;;AAEtB,SAAQ,kBAAkB;;;;;;;;;;;;;;;;;;CAkB1B,SAAS,sBAAsB,OAAO;AAClC,MAAI,MAAM,cAAc,OACpB;AAEJ,SAAO,MAAM,MAAM;;AAEvB,SAAQ,wBAAwB;;;;;;AChHhC,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,sBAAsB,KAAK;CACnC,MAAMC;CACN,MAAMC;CAEN,IAAM,sBAAN,MAA0B;EACtB,YAAY,MAAM;GACd,IAAI;AACJ,QAAK,UAAU,KAAK,KAAK,YAAY,QAAQ,OAAO,KAAK,IAAI,KAAK,EAAE;;EAExE,UAAU;AACN,OAAI,KAAK,KACL;GACJ,MAAM,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE;AACvC,QAAK,IAAI,SAAS,KAAK,OACnB,KAAI,MAAM,OACN;QAAI,CAAC,OAAO,SAAS,MAAM,MAAM,EAAE;AAC/B,YAAO,KAAK,MAAM,MAAM;AACxB,SAAI,KAAK,MAAM,MAAM;AACrB,WAAM,KAAK,MAAM,MAAM;;UAG1B;AACD,UAAM,KAAK,MAAM,UAAU;AAC3B,YAAQ,MAAM,MAAd;KACI,KAAK;KACL,KAAK;AACD,UAAI,CAAC,MAAM,OAAO,MAAM,OACpB,KAAI,KAAK,MAAM,UAAU;AAC7B;KACJ,KAAK;AACD,UAAI,MAAM,OACN,KAAI,KAAK,MAAM,UAAU;AAC7B;KACJ,KAAK;AACD,UAAI,KAAK,MAAM,UAAU;AACzB;;;AAIhB,QAAK,OAAO;IAAE;IAAK;IAAO,QAAQ,OAAO,OAAO,OAAO;IAAE;;;;;;;;;;;;;;;;;;;;;;EAsB7D,GAAG,SAAS,OAAO,wBAAwB,OAAO;AAC9C,OAAI,QAAQ,EACR,QAAO;AACX,OAAI,YAAY,QAAQ,YAAY,UAAa,OAAO,WAAW,SAC/D,QAAO;AACX,QAAK,SAAS;GACd,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,OAAO,KAAK;AAE7C,OAAI,KAAK,SAAS,KAAK,IAAI,UAAU,KAAK,IAAI,MAAK,MAAK,CAAC,KAAK,SAAS,EAAE,CAAC,CACtE,QAAO;AACX,OAAI,CAAC,uBAED;QAAI,KAAK,MAAK,MAAK,CAAC,KAAK,MAAM,SAAS,EAAE,CAAC,CACvC,QAAO;;AAIf,OAAI,QAAQ,EACR,QAAO;AAGX,QAAK,MAAM,QAAQ,KAAK,QAAQ;IAC5B,MAAM,QAAQ,QAAQ;AACtB,QAAI,CAACA,UAAQ,aAAa,MAAM,CAC5B,QAAO;AACX,QAAI,MAAM,cAAc,OACpB;IACJ,MAAM,QAAQ,KAAK,OAAO,MAAK,MAAK,EAAE,cAAc,MAAM,UAAU;AACpE,QAAI,CAAC,MACD,QAAO;AACX,QAAI,CAAC,KAAK,MAAM,MAAM,MAAM,YAAY,OAAO,uBAAuB,MAAM,CACxE,QAAO;;AAGf,QAAK,MAAM,SAAS,KAAK,QAAQ;AAC7B,QAAI,MAAM,UAAU,OAChB;AACJ,QAAI,CAAC,KAAK,MAAM,QAAQ,MAAM,YAAY,OAAO,uBAAuB,MAAM,CAC1E,QAAO;;AAEf,UAAO;;EAEX,MAAM,KAAK,OAAO,uBAAuB,OAAO;GAC5C,IAAI,WAAW,MAAM;AACrB,WAAQ,MAAM,MAAd;IACI,KAAK;AACD,SAAI,QAAQ,OACR,QAAO,MAAM;AACjB,SAAI,SACA,QAAO,KAAK,QAAQ,KAAK,MAAM,GAAG,OAAO,MAAM,EAAE;AACrD,YAAO,KAAK,OAAO,KAAK,MAAM,GAAG,MAAM,EAAE;IAC7C,KAAK;AACD,SAAI,QAAQ,OACR,QAAO,MAAM;AACjB,SAAI,SACA,QAAO,KAAK,QAAQ,KAAKD,qBAAkB,WAAW,OAAO,MAAM;AACvE,YAAO,KAAK,OAAO,KAAKA,qBAAkB,WAAW,MAAM;IAC/D,KAAK;AACD,SAAI,QAAQ,OACR,QAAO;AACX,SAAI,SACA,QAAO,KAAK,SAAS,KAAK,MAAM,GAAG,EAAE,uBAAuB,MAAM;AACtE,YAAO,KAAK,QAAQ,KAAK,MAAM,GAAG,EAAE,uBAAuB,MAAM;IACrE,KAAK;AACD,SAAI,OAAO,OAAO,YAAY,QAAQ,KAClC,QAAO;AACX,SAAI,QAAQ,EACR,QAAO;AACX,SAAI,CAAC,KAAK,QAAQ,KAAK,MAAM,GAAG,MAAM,CAClC,QAAO;AACX,aAAQ,MAAM,EAAE,MAAhB;MACI,KAAK,SACD,QAAO,KAAK,QAAQ,OAAO,OAAO,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,MAAM,EAAE,EAAE;MACxE,KAAK,OACD,QAAO,KAAK,QAAQ,OAAO,OAAO,IAAI,EAAEA,qBAAkB,WAAW,OAAO,MAAM;MACtF,KAAK,UACD,QAAO,KAAK,SAAS,OAAO,OAAO,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,uBAAuB,MAAM;;AAE3F;;AAER,UAAO;;EAEX,QAAQ,KAAK,MAAM,uBAAuB,OAAO;AAC7C,OAAI,sBACA,QAAO,KAAK,aAAa,KAAK,MAAM;AAExC,UAAO,KAAK,GAAG,KAAK,MAAM;;EAE9B,SAAS,KAAK,MAAM,uBAAuB,OAAO;AAC9C,OAAI,CAAC,MAAM,QAAQ,IAAI,CACnB,QAAO;AACX,OAAI,QAAQ,EACR,QAAO;AACX,OAAI,uBACA;SAAK,IAAI,IAAI,GAAG,IAAI,IAAI,UAAU,IAAI,OAAO,IACzC,KAAI,CAAC,KAAK,aAAa,IAAI,IAAI,QAAQ,EAAE,CACrC,QAAO;SAGf,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,UAAU,IAAI,OAAO,IACzC,KAAI,CAAC,KAAK,GAAG,IAAI,IAAI,QAAQ,EAAE,CAC3B,QAAO;AAEnB,UAAO;;EAEX,OAAO,KAAK,MAAM,UAAU;GACxB,IAAI,UAAU,OAAO;AACrB,WAAQ,MAAR;IACI,KAAKA,qBAAkB,WAAW;IAClC,KAAKA,qBAAkB,WAAW;IAClC,KAAKA,qBAAkB,WAAW;IAClC,KAAKA,qBAAkB,WAAW;IAClC,KAAKA,qBAAkB,WAAW,OAC9B,SAAQ,UAAR;KACI,KAAKA,qBAAkB,SAAS,OAC5B,QAAO,WAAW;KACtB,KAAKA,qBAAkB,SAAS,OAC5B,QAAO,WAAW,YAAY,CAAC,MAAM,IAAI;KAC7C,QACI,QAAO,WAAW;;IAE9B,KAAKA,qBAAkB,WAAW,KAC9B,QAAO,WAAW;IACtB,KAAKA,qBAAkB,WAAW,OAC9B,QAAO,WAAW;IACtB,KAAKA,qBAAkB,WAAW,MAC9B,QAAO,eAAe;IAC1B,KAAKA,qBAAkB,WAAW;IAClC,KAAKA,qBAAkB,WAAW,MAC9B,QAAO,WAAW,YAAY,CAAC,MAAM,IAAI;IAC7C,QAMI,QAAO,WAAW,YAAY,OAAO,UAAU,IAAI;;;EAG/D,QAAQ,KAAK,MAAM,OAAO,UAAU;AAChC,OAAI,CAAC,MAAM,QAAQ,IAAI,CACnB,QAAO;AACX,OAAI,QAAQ,EACR,QAAO;AACX,OAAI,MAAM,QAAQ,IAAI,EAClB;SAAK,IAAI,IAAI,GAAG,IAAI,IAAI,UAAU,IAAI,OAAO,IACzC,KAAI,CAAC,KAAK,OAAO,IAAI,IAAI,MAAM,SAAS,CACpC,QAAO;;AACnB,UAAO;;EAEX,QAAQ,KAAK,MAAM,OAAO;GACtB,IAAI,OAAO,OAAO,KAAK,IAAI;AAC3B,WAAQ,MAAR;IACI,KAAKA,qBAAkB,WAAW;IAClC,KAAKA,qBAAkB,WAAW;IAClC,KAAKA,qBAAkB,WAAW;IAClC,KAAKA,qBAAkB,WAAW;IAClC,KAAKA,qBAAkB,WAAW,OAC9B,QAAO,KAAK,QAAQ,KAAK,MAAM,GAAG,MAAM,CAAC,KAAI,MAAK,SAAS,EAAE,CAAC,EAAE,MAAM,MAAM;IAChF,KAAKA,qBAAkB,WAAW,KAC9B,QAAO,KAAK,QAAQ,KAAK,MAAM,GAAG,MAAM,CAAC,KAAI,MAAK,KAAK,SAAS,OAAO,KAAK,UAAU,QAAQ,EAAE,EAAE,MAAM,MAAM;IAClH,QACI,QAAO,KAAK,QAAQ,MAAM,MAAM,OAAOA,qBAAkB,SAAS,OAAO;;;;AAIzF,SAAQ,sBAAsB;;;;;;ACpO9B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,wBAAwB,KAAK;CACrC,MAAME;;;;;;;;CAQN,SAAS,sBAAsB,MAAM,MAAM;AACvC,UAAQ,MAAR;GACI,KAAKA,qBAAkB,SAAS,OAC5B,QAAO,KAAK,UAAU;GAC1B,KAAKA,qBAAkB,SAAS,OAC5B,QAAO,KAAK,UAAU;GAC1B,QAGI,QAAO,KAAK,UAAU;;;AAGlC,SAAQ,wBAAwB;;;;;;ACtBhC,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,uBAAuB,KAAK;CACpC,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;;;;;;CAMN,IAAM,uBAAN,MAA2B;EACvB,YAAY,MAAM;AACd,QAAK,OAAO;;EAEhB,UAAU;GACN,IAAI;AACJ,OAAI,KAAK,SAAS,QAAW;AACzB,SAAK,OAAO,EAAE;IACd,MAAM,eAAe,KAAK,KAAK,KAAK,YAAY,QAAQ,OAAO,KAAK,IAAI,KAAK,EAAE;AAC/E,SAAK,MAAM,SAAS,aAAa;AAC7B,UAAK,KAAK,MAAM,QAAQ;AACxB,UAAK,KAAK,MAAM,YAAY;AAC5B,UAAK,KAAK,MAAM,aAAa;;;;EAKzC,OAAO,WAAW,WAAW,WAAW;AACpC,OAAI,CAAC,WAAW;IACZ,IAAI,OAAOL,iBAAe,gBAAgB,UAAU;AACpD,QAAI,QAAQ,YAAY,QAAQ,UAC5B,QAAO,UAAU,UAAU;AAC/B,UAAM,IAAI,MAAM,qBAAqB,KAAK,OAAO,KAAK,KAAK,SAAS,GAAG,YAAY;;;;;;;;;;;;EAY3F,KAAK,OAAO,SAAS,SAAS;AAC1B,QAAK,SAAS;GACd,MAAM,gBAAgB,EAAE;AACxB,QAAK,MAAM,CAAC,SAAS,cAAc,OAAO,QAAQ,MAAM,EAAE;IACtD,MAAM,QAAQ,KAAK,KAAK;AACxB,QAAI,CAAC,OAAO;AACR,SAAI,CAAC,QAAQ,oBACT,OAAM,IAAI,MAAM,qCAAqC,KAAK,KAAK,SAAS,+BAA+B,UAAU;AACrH;;IAEJ,MAAM,YAAY,MAAM;IAExB,IAAI;AACJ,QAAI,MAAM,OAAO;AACb,SAAI,cAAc,SAAS,MAAM,SAAS,UAAU,MAAM,GAAG,CAAC,OAAO,6BACjE;AAGJ,SAAI,cAAc,SAAS,MAAM,MAAM,CACnC,OAAM,IAAI,MAAM,wCAAwC,MAAM,MAAM,OAAO,KAAK,KAAK,SAAS,uBAAuB;AACzH,mBAAc,KAAK,MAAM,MAAM;AAC/B,cAAS,QAAQ,MAAM,SAAS,EAC5B,WAAW,WACd;UAGD,UAAS;AAGb,QAAI,MAAM,QAAQ,OAAO;AACrB,SAAI,cAAc,KACd;AAGJ,UAAK,OAAOA,iBAAe,aAAa,UAAU,EAAE,MAAM,MAAM,UAAU;KAE1E,MAAM,WAAW,OAAO;AAExB,UAAK,MAAM,CAAC,YAAY,iBAAiB,OAAO,QAAQ,UAAU,EAAE;AAChE,WAAK,OAAO,iBAAiB,MAAM,MAAM,OAAO,cAAc,KAAK;MAEnE,IAAI;AACJ,cAAQ,MAAM,EAAE,MAAhB;OACI,KAAK;AACD,cAAM,MAAM,EAAE,GAAG,CAAC,iBAAiB,cAAc,QAAQ;AACzD;OACJ,KAAK;AACD,cAAM,KAAK,KAAK,MAAM,EAAE,GAAG,EAAE,cAAc,MAAM,MAAM,QAAQ,oBAAoB;AACnF,YAAI,QAAQ,MACR;AACJ;OACJ,KAAK;AACD,cAAM,KAAK,OAAO,cAAc,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,KAAK;AACjE;;AAER,WAAK,OAAO,QAAQ,QAAW,MAAM,OAAO,cAAc,aAAa;MAEvE,IAAI,MAAM;AACV,UAAI,MAAM,KAAKE,oBAAkB,WAAW,KACxC,OAAM,OAAO,SAAS,OAAO,OAAO,UAAU,QAAQ;AAC1D,YAAM,KAAK,OAAO,KAAK,MAAM,GAAGA,oBAAkB,SAAS,QAAQ,MAAM,KAAK,CAAC,UAAU;AACzF,eAAS,OAAO;;eAGf,MAAM,QAAQ;AACnB,SAAI,cAAc,KACd;AAEJ,UAAK,OAAO,MAAM,QAAQ,UAAU,EAAE,MAAM,MAAM,UAAU;KAE5D,MAAM,WAAW,OAAO;AAExB,UAAK,MAAM,YAAY,WAAW;AAC9B,WAAK,OAAO,aAAa,MAAM,MAAM,MAAM,KAAK;MAChD,IAAI;AACJ,cAAQ,MAAM,MAAd;OACI,KAAK;AACD,cAAM,MAAM,GAAG,CAAC,iBAAiB,UAAU,QAAQ;AACnD;OACJ,KAAK;AACD,cAAM,KAAK,KAAK,MAAM,GAAG,EAAE,UAAU,MAAM,MAAM,QAAQ,oBAAoB;AAC7E,YAAI,QAAQ,MACR;AACJ;OACJ,KAAK;AACD,cAAM,KAAK,OAAO,UAAU,MAAM,GAAG,MAAM,GAAG,MAAM,KAAK;AACzD;;AAER,WAAK,OAAO,QAAQ,QAAW,MAAM,MAAM,UAAU;AACrD,eAAS,KAAK,IAAI;;UAItB,SAAQ,MAAM,MAAd;KACI,KAAK;AACD,UAAI,cAAc,QAAQ,MAAM,GAAG,CAAC,YAAY,yBAAyB;AACrE,YAAK,OAAO,MAAM,UAAU,QAAW,MAAM,OAAO,mBAAmB,KAAK;AAC5E;;AAEJ,aAAO,aAAa,MAAM,GAAG,CAAC,iBAAiB,WAAW,SAAS,OAAO,WAAW;AACrF;KACJ,KAAK;AACD,UAAI,cAAc,KACd;MACJ,IAAI,MAAM,KAAK,KAAK,MAAM,GAAG,EAAE,WAAW,MAAM,MAAM,QAAQ,oBAAoB;AAClF,UAAI,QAAQ,MACR;AACJ,aAAO,aAAa;AACpB;KACJ,KAAK;AACD,UAAI,cAAc,KACd;AACJ,aAAO,aAAa,KAAK,OAAO,WAAW,MAAM,GAAG,MAAM,GAAG,MAAM,KAAK;AACxE;;;;;;;;;EAUpB,KAAK,MAAM,MAAM,WAAW,qBAAqB;AAC7C,OAAI,KAAK,MAAM,4BACX,YAAS,OAAO,SAAS,QAAQ,SAAS,cAAc,yBAAyB,KAAK,KAAK,SAAS,GAAG,UAAU,SAAS,KAAK,GAAG,qBAAqB;AAC3J,OAAI,SAAS,KAET,QAAO;AACX,WAAQ,OAAO,MAAf;IACI,KAAK;AACD,gBAAS,OAAO,OAAO,UAAU,KAAK,EAAE,yBAAyB,KAAK,KAAK,SAAS,GAAG,UAAU,0CAA0C,KAAK,GAAG;AACnJ,YAAO;IACX,KAAK;KACD,IAAI,gBAAgB;AACpB,SAAI,KAAK,MAAM,KAAK,UAAU,GAAG,KAAK,GAAG,OAAO,KAAK,KAAK,GAEtD,iBAAgB,KAAK,UAAU,KAAK,GAAG,OAAO;KAClD,IAAI,aAAa,KAAK,GAAG;AACzB,SAAI,OAAO,eAAe,eAAe,oBACrC,QAAO;AAEX,gBAAS,OAAO,OAAO,cAAc,UAAU,yBAAyB,KAAK,KAAK,SAAS,GAAG,UAAU,SAAS,KAAK,GAAG,qBAAqB,KAAK,IAAI;AACvJ,YAAO;;AAEf,cAAS,OAAO,OAAO,yBAAyB,KAAK,KAAK,SAAS,GAAG,UAAU,iCAAiC,OAAO,KAAK,IAAI;;EAErI,OAAO,MAAM,MAAM,UAAU,WAAW;GACpC,IAAI;AACJ,OAAI;AACA,YAAQ,MAAR;KAGI,KAAKA,oBAAkB,WAAW;KAClC,KAAKA,oBAAkB,WAAW;AAC9B,UAAI,SAAS,KACT,QAAO;AACX,UAAI,SAAS,MACT,QAAO;AACX,UAAI,SAAS,WACT,QAAO,OAAO;AAClB,UAAI,SAAS,YACT,QAAO,OAAO;AAClB,UAAI,SAAS,IAAI;AACb,WAAI;AACJ;;AAEJ,UAAI,OAAO,QAAQ,YAAY,KAAK,MAAM,CAAC,WAAW,KAAK,QAAQ;AAC/D,WAAI;AACJ;;AAEJ,UAAI,OAAO,QAAQ,YAAY,OAAO,QAAQ,SAC1C;MAEJ,IAAI,QAAQ,OAAO,KAAK;AACxB,UAAI,OAAO,MAAM,MAAM,EAAE;AACrB,WAAI;AACJ;;AAEJ,UAAI,CAAC,OAAO,SAAS,MAAM,EAAE;AAEzB,WAAI;AACJ;;AAEJ,UAAI,QAAQA,oBAAkB,WAAW,MACrC,YAAS,cAAc,MAAM;AACjC,aAAO;KAEX,KAAKA,oBAAkB,WAAW;KAClC,KAAKA,oBAAkB,WAAW;KAClC,KAAKA,oBAAkB,WAAW;KAClC,KAAKA,oBAAkB,WAAW;KAClC,KAAKA,oBAAkB,WAAW;AAC9B,UAAI,SAAS,KACT,QAAO;MACX,IAAI;AACJ,UAAI,OAAO,QAAQ,SACf,SAAQ;eACH,SAAS,GACd,KAAI;eACC,OAAO,QAAQ,SACpB,KAAI,KAAK,MAAM,CAAC,WAAW,KAAK,OAC5B,KAAI;UAEJ,SAAQ,OAAO,KAAK;AAE5B,UAAI,UAAU,OACV;AACJ,UAAI,QAAQA,oBAAkB,WAAW,OACrC,YAAS,aAAa,MAAM;UAE5B,YAAS,YAAY,MAAM;AAC/B,aAAO;KAEX,KAAKA,oBAAkB,WAAW;KAClC,KAAKA,oBAAkB,WAAW;KAClC,KAAKA,oBAAkB,WAAW;AAC9B,UAAI,SAAS,KACT,QAAOG,4BAA0B,sBAAsBF,YAAU,OAAO,MAAM,SAAS;AAC3F,UAAI,OAAO,QAAQ,YAAY,OAAO,QAAQ,SAC1C;AACJ,aAAOE,4BAA0B,sBAAsBF,YAAU,OAAO,KAAK,KAAK,EAAE,SAAS;KACjG,KAAKD,oBAAkB,WAAW;KAClC,KAAKA,oBAAkB,WAAW;AAC9B,UAAI,SAAS,KACT,QAAOG,4BAA0B,sBAAsBF,YAAU,QAAQ,MAAM,SAAS;AAC5F,UAAI,OAAO,QAAQ,YAAY,OAAO,QAAQ,SAC1C;AACJ,aAAOE,4BAA0B,sBAAsBF,YAAU,QAAQ,KAAK,KAAK,EAAE,SAAS;KAElG,KAAKD,oBAAkB,WAAW;AAC9B,UAAI,SAAS,KACT,QAAO;AACX,UAAI,OAAO,SAAS,UAChB;AACJ,aAAO;KAEX,KAAKA,oBAAkB,WAAW;AAC9B,UAAI,SAAS,KACT,QAAO;AACX,UAAI,OAAO,SAAS,UAAU;AAC1B,WAAI;AACJ;;AASJ,aAAO;KAGX,KAAKA,oBAAkB,WAAW;AAC9B,UAAI,SAAS,QAAQ,SAAS,GAC1B,QAAO,IAAI,WAAW,EAAE;AAC5B,UAAI,OAAO,SAAS,SAChB;AACJ,aAAOD,WAAS,aAAa,KAAK;;YAGvC,OAAO;AACV,QAAI,MAAM;;AAEd,QAAK,OAAO,OAAO,aAAa,IAAI,QAAQ,IAAI,KAAK,KAAK;;;AAGlE,SAAQ,uBAAuB;;;;;;AC3T/B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,uBAAuB,KAAK;CACpC,MAAMK;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;;;;;;;CAON,IAAM,uBAAN,MAA2B;EACvB,YAAY,MAAM;GACd,IAAI;AACJ,QAAK,UAAU,KAAK,KAAK,YAAY,QAAQ,OAAO,KAAK,IAAI,KAAK,EAAE;;;;;EAKxE,MAAM,SAAS,SAAS;GACpB,MAAM,OAAO,EAAE,EAAE,SAAS;AAC1B,QAAK,MAAM,SAAS,KAAK,QAAQ;AAE7B,QAAI,CAAC,MAAM,OAAO;KACd,IAAIC,cAAY,KAAK,MAAM,OAAO,OAAO,MAAM,YAAY,QAAQ;AACnE,SAAIA,gBAAc,OACd,MAAK,QAAQ,oBAAoB,MAAM,OAAO,MAAM,YAAYA;AACpE;;IAGJ,MAAM,QAAQ,OAAO,MAAM;AAC3B,QAAI,MAAM,cAAc,MAAM,UAC1B;IACJ,MAAM,MAAM,MAAM,QAAQ,YAAY,MAAM,QAAQ,SAC9C,OAAO,OAAO,OAAO,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,mBAAmB,MAAM,CAAC,GAAG;IAC/E,IAAI,YAAY,KAAK,MAAM,OAAO,MAAM,MAAM,YAAY,IAAI;AAC9D,eAAS,OAAO,cAAc,OAAU;AACxC,SAAK,QAAQ,oBAAoB,MAAM,OAAO,MAAM,YAAY;;AAEpE,UAAO;;EAEX,MAAM,OAAO,OAAO,SAAS;GACzB,IAAI,YAAY;AAChB,OAAI,MAAM,QAAQ,OAAO;AACrB,eAAS,OAAO,OAAO,SAAS,YAAY,UAAU,KAAK;IAC3D,MAAM,UAAU,EAAE;AAClB,YAAQ,MAAM,EAAE,MAAhB;KACI,KAAK;AACD,WAAK,MAAM,CAAC,UAAU,eAAe,OAAO,QAAQ,MAAM,EAAE;OACxD,MAAM,MAAM,KAAK,OAAO,MAAM,EAAE,GAAG,YAAY,MAAM,MAAM,OAAO,KAAK;AACvE,kBAAS,OAAO,QAAQ,OAAU;AAClC,eAAQ,SAAS,UAAU,IAAI;;AAEnC;KACJ,KAAK;MACD,MAAM,cAAc,MAAM,EAAE,GAAG;AAC/B,WAAK,MAAM,CAAC,UAAU,eAAe,OAAO,QAAQ,MAAM,EAAE;OACxD,MAAM,MAAM,KAAK,QAAQ,aAAa,YAAY,MAAM,MAAM,QAAQ;AACtE,kBAAS,OAAO,QAAQ,OAAU;AAClC,eAAQ,SAAS,UAAU,IAAI;;AAEnC;KACJ,KAAK;MACD,MAAM,WAAW,MAAM,EAAE,GAAG;AAC5B,WAAK,MAAM,CAAC,UAAU,eAAe,OAAO,QAAQ,MAAM,EAAE;AACxD,kBAAS,OAAO,eAAe,UAAa,OAAO,cAAc,SAAS;OAC1E,MAAM,MAAM,KAAK,KAAK,UAAU,YAAY,MAAM,MAAM,OAAO,MAAM,QAAQ,cAAc;AAC3F,kBAAS,OAAO,QAAQ,OAAU;AAClC,eAAQ,SAAS,UAAU,IAAI;;AAEnC;;AAER,QAAI,QAAQ,qBAAqB,OAAO,KAAK,QAAQ,CAAC,SAAS,EAC3D,aAAY;cAEX,MAAM,QAAQ;AACnB,eAAS,OAAO,MAAM,QAAQ,MAAM,CAAC;IACrC,MAAM,UAAU,EAAE;AAClB,YAAQ,MAAM,MAAd;KACI,KAAK;AACD,WAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;OACnC,MAAM,MAAM,KAAK,OAAO,MAAM,GAAG,MAAM,IAAI,MAAM,MAAM,MAAM,KAAK,KAAK;AACvE,kBAAS,OAAO,QAAQ,OAAU;AAClC,eAAQ,KAAK,IAAI;;AAErB;KACJ,KAAK;MACD,MAAM,WAAW,MAAM,GAAG;AAC1B,WAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,kBAAS,OAAO,MAAM,OAAO,UAAa,OAAO,MAAM,MAAM,SAAS;OACtE,MAAM,MAAM,KAAK,KAAK,UAAU,MAAM,IAAI,MAAM,MAAM,MAAM,KAAK,MAAM,QAAQ,cAAc;AAC7F,kBAAS,OAAO,QAAQ,OAAU;AAClC,eAAQ,KAAK,IAAI;;AAErB;KACJ,KAAK;MACD,MAAM,cAAc,MAAM,GAAG;AAC7B,WAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;OACnC,MAAM,MAAM,KAAK,QAAQ,aAAa,MAAM,IAAI,MAAM,MAAM,QAAQ;AACpE,kBAAS,OAAO,QAAQ,OAAU;AAClC,eAAQ,KAAK,IAAI;;AAErB;;AAGR,QAAI,QAAQ,qBAAqB,QAAQ,SAAS,KAAK,QAAQ,kBAC3D,aAAY;SAGhB,SAAQ,MAAM,MAAd;IACI,KAAK;AACD,iBAAY,KAAK,OAAO,MAAM,GAAG,OAAO,MAAM,MAAM,MAAM,KAAK,QAAQ,kBAAkB;AACzF;IACJ,KAAK;AACD,iBAAY,KAAK,KAAK,MAAM,GAAG,EAAE,OAAO,MAAM,MAAM,MAAM,KAAK,QAAQ,mBAAmB,QAAQ,cAAc;AAChH;IACJ,KAAK;AACD,iBAAY,KAAK,QAAQ,MAAM,GAAG,EAAE,OAAO,MAAM,MAAM,QAAQ;AAC/D;;AAGZ,UAAO;;;;;EAKX,KAAK,MAAM,OAAO,WAAW,UAAU,mBAAmB,eAAe;AACrE,OAAI,KAAK,MAAM,4BACX,QAAO,CAAC,qBAAqB,CAAC,WAAW,SAAY;AACzD,OAAI,UAAU,QAAW;AACrB,eAAS,OAAO,SAAS;AACzB;;AAEJ,OAAI,UAAU,KAAK,CAAC,qBAAqB,CAAC,SAEtC,QAAO;AACX,cAAS,OAAO,OAAO,SAAS,SAAS;AACzC,cAAS,OAAO,OAAO,UAAU,MAAM,CAAC;AACxC,OAAI,iBAAiB,CAAC,KAAK,GAAG,eAAe,MAAM,CAE/C,QAAO;AACX,OAAI,KAAK,GAEL,QAAO,KAAK,KAAK,KAAK,GAAG;AAC7B,UAAO,KAAK,GAAG;;EAEnB,QAAQ,MAAM,OAAO,WAAW,SAAS;AACrC,OAAI,UAAU,OACV,QAAO,QAAQ,oBAAoB,OAAO;AAC9C,UAAO,KAAK,kBAAkB,OAAO,QAAQ;;EAEjD,OAAO,MAAM,OAAO,WAAW,UAAU,mBAAmB;AACxD,OAAI,UAAU,QAAW;AACrB,eAAS,OAAO,SAAS;AACzB;;GAEJ,MAAM,KAAK,qBAAqB;AAEhC,WAAQ,MAAR;IAEI,KAAKF,oBAAkB,WAAW;IAClC,KAAKA,oBAAkB,WAAW;IAClC,KAAKA,oBAAkB,WAAW;AAC9B,SAAI,UAAU,EACV,QAAO,KAAK,IAAI;AACpB,gBAAS,YAAY,MAAM;AAC3B,YAAO;IACX,KAAKA,oBAAkB,WAAW;IAClC,KAAKA,oBAAkB,WAAW;AAC9B,SAAI,UAAU,EACV,QAAO,KAAK,IAAI;AACpB,gBAAS,aAAa,MAAM;AAC5B,YAAO;IAGX,KAAKA,oBAAkB,WAAW,MAC9B,YAAS,cAAc,MAAM;IACjC,KAAKA,oBAAkB,WAAW;AAC9B,SAAI,UAAU,EACV,QAAO,KAAK,IAAI;AACpB,gBAAS,OAAO,OAAO,SAAS,SAAS;AACzC,SAAI,OAAO,MAAM,MAAM,CACnB,QAAO;AACX,SAAI,UAAU,OAAO,kBACjB,QAAO;AACX,SAAI,UAAU,OAAO,kBACjB,QAAO;AACX,YAAO;IAEX,KAAKA,oBAAkB,WAAW;AAC9B,SAAI,UAAU,GACV,QAAO,KAAK,KAAK;AACrB,gBAAS,OAAO,OAAO,SAAS,SAAS;AACzC,YAAO;IAEX,KAAKA,oBAAkB,WAAW;AAC9B,SAAI,UAAU,MACV,QAAO,KAAK,QAAQ;AACxB,gBAAS,OAAO,OAAO,SAAS,UAAU;AAC1C,YAAO;IAEX,KAAKA,oBAAkB,WAAW;IAClC,KAAKA,oBAAkB,WAAW;AAC9B,gBAAS,OAAO,OAAO,SAAS,YAAY,OAAO,SAAS,YAAY,OAAO,SAAS,SAAS;KACjG,IAAI,QAAQD,YAAU,QAAQ,KAAK,MAAM;AACzC,SAAI,MAAM,QAAQ,IAAI,CAAC,GACnB,QAAO;AACX,YAAO,MAAM,UAAU;IAE3B,KAAKC,oBAAkB,WAAW;IAClC,KAAKA,oBAAkB,WAAW;IAClC,KAAKA,oBAAkB,WAAW;AAC9B,gBAAS,OAAO,OAAO,SAAS,YAAY,OAAO,SAAS,YAAY,OAAO,SAAS,SAAS;KACjG,IAAI,OAAOD,YAAU,OAAO,KAAK,MAAM;AACvC,SAAI,KAAK,QAAQ,IAAI,CAAC,GAClB,QAAO;AACX,YAAO,KAAK,UAAU;IAG1B,KAAKC,oBAAkB,WAAW;AAC9B,gBAAS,OAAO,iBAAiB,WAAW;AAC5C,SAAI,CAAC,MAAM,WACP,QAAO,KAAK,KAAK;AACrB,YAAOF,WAAS,aAAa,MAAM;;;;AAInD,SAAQ,uBAAuB;;;;;;ACpO/B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,0BAA0B,KAAK;CACvC,MAAMK;CACN,MAAMC;CACN,MAAMC;;;;CAIN,SAAS,wBAAwB,MAAM,WAAWF,oBAAkB,SAAS,QAAQ;AACjF,UAAQ,MAAR;GACI,KAAKA,oBAAkB,WAAW,KAC9B,QAAO;GACX,KAAKA,oBAAkB,WAAW;GAClC,KAAKA,oBAAkB,WAAW,QAC9B,QAAOC,4BAA0B,sBAAsBC,YAAU,QAAQ,MAAM,SAAS;GAC5F,KAAKF,oBAAkB,WAAW;GAClC,KAAKA,oBAAkB,WAAW;GAClC,KAAKA,oBAAkB,WAAW,OAC9B,QAAOC,4BAA0B,sBAAsBC,YAAU,OAAO,MAAM,SAAS;GAC3F,KAAKF,oBAAkB,WAAW;GAClC,KAAKA,oBAAkB,WAAW,MAC9B,QAAO;GACX,KAAKA,oBAAkB,WAAW,MAC9B,QAAO,IAAI,WAAW,EAAE;GAC5B,KAAKA,oBAAkB,WAAW,OAC9B,QAAO;GACX,QAMI,QAAO;;;AAGnB,SAAQ,0BAA0B;;;;;;ACnClC,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,yBAAyB,KAAK;CACtC,MAAMG;CACN,MAAMC;CACN,MAAM;CACN,MAAMC;;;;;;CAMN,IAAM,yBAAN,MAA6B;EACzB,YAAY,MAAM;AACd,QAAK,OAAO;;EAEhB,UAAU;GACN,IAAI;AACJ,OAAI,CAAC,KAAK,gBAAgB;IACtB,MAAM,eAAe,KAAK,KAAK,KAAK,YAAY,QAAQ,OAAO,KAAK,IAAI,KAAK,EAAE;AAC/E,SAAK,iBAAiB,IAAI,IAAI,YAAY,KAAI,UAAS,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;;;;;;;;;;;;EAYlF,KAAK,QAAQ,SAAS,SAAS,QAAQ;AACnC,QAAK,SAAS;GACd,MAAM,MAAM,WAAW,SAAY,OAAO,MAAM,OAAO,MAAM;AAC7D,UAAO,OAAO,MAAM,KAAK;IAErB,MAAM,CAAC,SAAS,YAAY,OAAO,KAAK,EAAE,QAAQ,KAAK,eAAe,IAAI,QAAQ;AAClF,QAAI,CAAC,OAAO;KACR,IAAI,IAAI,QAAQ;AAChB,SAAI,KAAK,QACL,OAAM,IAAI,MAAM,iBAAiB,QAAQ,cAAc,SAAS,QAAQ,KAAK,KAAK,WAAW;KACjG,IAAI,IAAI,OAAO,KAAK,SAAS;AAC7B,SAAI,MAAM,MACN,EAAC,MAAM,OAAOF,2BAAyB,oBAAoB,SAAS,GAAG,KAAK,KAAK,UAAU,SAAS,SAAS,UAAU,EAAE;AAC7H;;IAGJ,IAAI,SAAS,SAAS,WAAW,MAAM,QAAQ,YAAY,MAAM;AAEjE,QAAI,MAAM,OAAO;AACb,cAAS,OAAO,MAAM;AAEtB,SAAI,OAAO,cAAc,UACrB,UAAS,QAAQ,MAAM,SAAS,EAC5B,WAAW,WACd;;AAGT,YAAQ,MAAM,MAAd;KACI,KAAK;KACL,KAAK;MACD,IAAI,IAAI,MAAM,QAAQ,SAASC,oBAAkB,WAAW,QAAQ,MAAM;MAC1E,IAAI,IAAI,MAAM,QAAQ,WAAW,MAAM,IAAI;AAC3C,UAAI,UAAU;OACV,IAAI,MAAM,OAAO;AACjB,WAAI,YAAYD,2BAAyB,SAAS,mBAAmB,KAAKC,oBAAkB,WAAW,UAAU,KAAKA,oBAAkB,WAAW,OAAO;QACtJ,IAAI,IAAI,OAAO,QAAQ,GAAG,OAAO;AACjC,eAAO,OAAO,MAAM,EAChB,KAAI,KAAK,KAAK,OAAO,QAAQ,GAAG,EAAE,CAAC;aAGvC,KAAI,KAAK,KAAK,OAAO,QAAQ,GAAG,EAAE,CAAC;YAGvC,QAAO,aAAa,KAAK,OAAO,QAAQ,GAAG,EAAE;AACjD;KACJ,KAAK;AACD,UAAI,UAAU;OACV,IAAI,MAAM,OAAO;OACjB,IAAI,MAAM,MAAM,GAAG,CAAC,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,QAAQ;AACxE,WAAI,KAAK,IAAI;YAGb,QAAO,aAAa,MAAM,GAAG,CAAC,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,SAAS,OAAO,WAAW;AACzG;KACJ,KAAK;MACD,IAAI,CAAC,QAAQ,UAAU,KAAK,SAAS,OAAO,QAAQ,QAAQ;AAE5D,aAAO,WAAW,UAAU;AAC5B;;;;;;;EAOhB,SAAS,OAAO,QAAQ,SAAS;GAC7B,IAAI,SAAS,OAAO,QAAQ;GAC5B,IAAI,MAAM,OAAO,MAAM;GACvB,IAAI,MAAM;GACV,IAAI,MAAM;AACV,UAAO,OAAO,MAAM,KAAK;IACrB,IAAI,CAAC,SAAS,YAAY,OAAO,KAAK;AACtC,YAAQ,SAAR;KACI,KAAK;AACD,UAAI,MAAM,KAAKA,oBAAkB,WAAW,KACxC,OAAM,OAAO,MAAM,CAAC,UAAU;UAG9B,OAAM,KAAK,OAAO,QAAQ,MAAM,GAAGA,oBAAkB,SAAS,OAAO;AACzE;KACJ,KAAK;AACD,cAAQ,MAAM,EAAE,MAAhB;OACI,KAAK;AACD,cAAM,KAAK,OAAO,QAAQ,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE;AAC/C;OACJ,KAAK;AACD,cAAM,OAAO,OAAO;AACpB;OACJ,KAAK;AACD,cAAM,MAAM,EAAE,GAAG,CAAC,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,QAAQ;AACtE;;AAER;KACJ,QACI,OAAM,IAAI,MAAM,iBAAiB,QAAQ,cAAc,SAAS,qBAAqB,KAAK,KAAK,SAAS,GAAG,MAAM,OAAO;;;AAGpI,OAAI,QAAQ,QAAW;IACnB,IAAI,SAASC,8BAA4B,wBAAwB,MAAM,EAAE;AACzE,UAAM,MAAM,KAAKD,oBAAkB,WAAW,OAAO,OAAO,UAAU,GAAG;;AAE7E,OAAI,QAAQ,OACR,SAAQ,MAAM,EAAE,MAAhB;IACI,KAAK;AACD,WAAMC,8BAA4B,wBAAwB,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE;AAC/E;IACJ,KAAK;AACD,WAAM;AACN;IACJ,KAAK;AACD,WAAM,MAAM,EAAE,GAAG,CAAC,QAAQ;AAC1B;;AAEZ,UAAO,CAAC,KAAK,IAAI;;EAErB,OAAO,QAAQ,MAAM,UAAU;AAC3B,WAAQ,MAAR;IACI,KAAKD,oBAAkB,WAAW,MAC9B,QAAO,OAAO,OAAO;IACzB,KAAKA,oBAAkB,WAAW,OAC9B,QAAO,OAAO,QAAQ;IAC1B,KAAKA,oBAAkB,WAAW,KAC9B,QAAO,OAAO,MAAM;IACxB,KAAKA,oBAAkB,WAAW,OAC9B,QAAO,OAAO,QAAQ;IAC1B,KAAKA,oBAAkB,WAAW,MAC9B,QAAO,OAAO,OAAO;IACzB,KAAKA,oBAAkB,WAAW,MAC9B,QAAO,0BAA0B,sBAAsB,OAAO,OAAO,EAAE,SAAS;IACpF,KAAKA,oBAAkB,WAAW,OAC9B,QAAO,0BAA0B,sBAAsB,OAAO,QAAQ,EAAE,SAAS;IACrF,KAAKA,oBAAkB,WAAW,QAC9B,QAAO,0BAA0B,sBAAsB,OAAO,SAAS,EAAE,SAAS;IACtF,KAAKA,oBAAkB,WAAW,QAC9B,QAAO,OAAO,SAAS;IAC3B,KAAKA,oBAAkB,WAAW,MAC9B,QAAO,OAAO,OAAO;IACzB,KAAKA,oBAAkB,WAAW,OAC9B,QAAO,OAAO,QAAQ;IAC1B,KAAKA,oBAAkB,WAAW,SAC9B,QAAO,OAAO,UAAU;IAC5B,KAAKA,oBAAkB,WAAW,SAC9B,QAAO,0BAA0B,sBAAsB,OAAO,UAAU,EAAE,SAAS;IACvF,KAAKA,oBAAkB,WAAW,OAC9B,QAAO,OAAO,QAAQ;IAC1B,KAAKA,oBAAkB,WAAW,OAC9B,QAAO,0BAA0B,sBAAsB,OAAO,QAAQ,EAAE,SAAS;;;;AAIjG,SAAQ,yBAAyB;;;;;;ACrLjC,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,yBAAyB,KAAK;CACtC,MAAME;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;;;;;;CAMN,IAAM,yBAAN,MAA6B;EACzB,YAAY,MAAM;AACd,QAAK,OAAO;;EAEhB,UAAU;AACN,OAAI,CAAC,KAAK,OAEN,MAAK,UADe,KAAK,KAAK,SAAS,KAAK,KAAK,OAAO,QAAQ,GAAG,EAAE,EAC3C,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG;;;;;EAM7D,MAAM,SAAS,QAAQ,SAAS;AAC5B,QAAK,SAAS;AACd,QAAK,MAAM,SAAS,KAAK,QAAQ;IAC7B,IAAI,OACJ,aACA,WAAW,MAAM,QAAQ,YAAY,MAAM;AAE3C,QAAI,MAAM,OAAO;KACb,MAAM,QAAQ,QAAQ,MAAM;AAC5B,SAAI,MAAM,cAAc,UACpB;AACJ,aAAQ,MAAM;AACd,mBAAc;WAEb;AACD,aAAQ,QAAQ;AAChB,mBAAc;;AAGlB,YAAQ,MAAM,MAAd;KACI,KAAK;KACL,KAAK;MACD,IAAI,IAAI,MAAM,QAAQ,SAASF,oBAAkB,WAAW,QAAQ,MAAM;AAC1E,UAAI,UAAU;AACV,kBAAS,OAAO,MAAM,QAAQ,MAAM,CAAC;AACrC,WAAI,YAAYA,oBAAkB,WAAW,OACzC,MAAK,OAAO,QAAQ,GAAG,MAAM,IAAI,MAAM;WAEvC,MAAK,MAAM,QAAQ,MACf,MAAK,OAAO,QAAQ,GAAG,MAAM,IAAI,MAAM,KAAK;iBAE/C,UAAU,OACf,YAAS,OAAO,MAAM,IAAI;UAE1B,MAAK,OAAO,QAAQ,GAAG,MAAM,IAAI,OAAO,eAAe,MAAM,IAAI;AACrE;KACJ,KAAK;AACD,UAAI,UAAU;AACV,kBAAS,OAAO,MAAM,QAAQ,MAAM,CAAC;AACrC,YAAK,MAAM,QAAQ,MACf,MAAK,QAAQ,QAAQ,SAAS,MAAM,GAAG,EAAE,MAAM,IAAI,KAAK;YAG5D,MAAK,QAAQ,QAAQ,SAAS,MAAM,GAAG,EAAE,MAAM,IAAI,MAAM;AAE7D;KACJ,KAAK;AACD,iBAAS,OAAO,OAAO,SAAS,YAAY,UAAU,KAAK;AAC3D,WAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,MAAM,CAC1C,MAAK,SAAS,QAAQ,SAAS,OAAO,KAAK,IAAI;AACnD;;;GAGZ,IAAI,IAAI,QAAQ;AAChB,OAAI,MAAM,MACN,EAAC,MAAM,OAAOD,2BAAyB,oBAAoB,UAAU,GAAG,KAAK,KAAK,UAAU,SAAS,OAAO;;EAEpH,SAAS,QAAQ,SAAS,OAAO,KAAK,OAAO;AACzC,UAAO,IAAI,MAAM,IAAIA,2BAAyB,SAAS,gBAAgB;AACvE,UAAO,MAAM;GAGb,IAAI,WAAW;AACf,WAAQ,MAAM,GAAd;IACI,KAAKC,oBAAkB,WAAW;IAClC,KAAKA,oBAAkB,WAAW;IAClC,KAAKA,oBAAkB,WAAW;IAClC,KAAKA,oBAAkB,WAAW;IAClC,KAAKA,oBAAkB,WAAW;AAC9B,gBAAW,OAAO,SAAS,IAAI;AAC/B;IACJ,KAAKA,oBAAkB,WAAW;AAC9B,gBAAS,OAAO,OAAO,UAAU,OAAO,QAAQ;AAChD,gBAAW,OAAO;AAClB;;AAGR,QAAK,OAAO,QAAQ,MAAM,GAAG,GAAG,UAAU,KAAK;AAE/C,WAAQ,MAAM,EAAE,MAAhB;IACI,KAAK;AACD,UAAK,OAAO,QAAQ,MAAM,EAAE,GAAG,GAAG,OAAO,KAAK;AAC9C;IACJ,KAAK;AACD,UAAK,OAAO,QAAQA,oBAAkB,WAAW,OAAO,GAAG,OAAO,KAAK;AACvE;IACJ,KAAK;AACD,UAAK,QAAQ,QAAQ,SAAS,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM;AACpD;;AAER,UAAO,MAAM;;EAEjB,QAAQ,QAAQ,SAAS,SAAS,SAAS,OAAO;AAC9C,OAAI,UAAU,OACV;AACJ,WAAQ,oBAAoB,OAAO,OAAO,IAAI,SAASD,2BAAyB,SAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ;AAC1H,UAAO,MAAM;;;;;EAKjB,OAAO,QAAQ,MAAM,SAAS,OAAO,aAAa;GAC9C,IAAI,CAAC,UAAU,QAAQ,aAAa,KAAK,WAAW,MAAM,MAAM;AAChE,OAAI,CAAC,aAAa,aAAa;AAC3B,WAAO,IAAI,SAAS,SAAS;AAC7B,WAAO,QAAQ,MAAM;;;;;;EAM7B,OAAO,QAAQ,MAAM,SAAS,OAAO;AACjC,OAAI,CAAC,MAAM,OACP;AACJ,cAAS,OAAO,SAASC,oBAAkB,WAAW,SAAS,SAASA,oBAAkB,WAAW,OAAO;AAE5G,UAAO,IAAI,SAASD,2BAAyB,SAAS,gBAAgB;AAEtE,UAAO,MAAM;GAEb,IAAI,GAAG,UAAW,KAAK,WAAW,KAAK;AACvC,QAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,IAC9B,QAAO,QAAQ,MAAM,GAAG;AAE5B,UAAO,MAAM;;;;;;;;;;;;EAYjB,WAAW,MAAM,OAAO;GACpB,IAAI,IAAIA,2BAAyB,SAAS;GAC1C,IAAI;GACJ,IAAI,IAAI,UAAU;GAClB,IAAI,IAAI,UAAU;AAClB,WAAQ,MAAR;IACI,KAAKC,oBAAkB,WAAW;AAC9B,SAAI;AACJ;IACJ,KAAKA,oBAAkB,WAAW;AAC9B,SAAI,KAAK,CAAC,MAAM;AAChB,SAAID,2BAAyB,SAAS;AACtC,SAAI;AACJ;IACJ,KAAKC,oBAAkB,WAAW;AAC9B,SAAI,UAAU;AACd,SAAI;AACJ;IACJ,KAAKA,oBAAkB,WAAW;AAC9B,SAAI;AACJ;IACJ,KAAKA,oBAAkB,WAAW;AAC9B,SAAID,2BAAyB,SAAS;AACtC,SAAI;AACJ;IACJ,KAAKC,oBAAkB,WAAW;AAC9B,SAAID,2BAAyB,SAAS;AACtC,SAAI;AACJ;IACJ,KAAKC,oBAAkB,WAAW;AAC9B,SAAI,KAAKE,YAAU,OAAO,KAAK,MAAM,CAAC,QAAQ;AAC9C,SAAI;AACJ;IACJ,KAAKF,oBAAkB,WAAW;AAC9B,SAAI,KAAKE,YAAU,QAAQ,KAAK,MAAM,CAAC,QAAQ;AAC/C,SAAI;AACJ;IACJ,KAAKF,oBAAkB,WAAW;AAC9B,SAAI,KAAKE,YAAU,QAAQ,KAAK,MAAM,CAAC,QAAQ;AAC/C,SAAIH,2BAAyB,SAAS;AACtC,SAAI;AACJ;IACJ,KAAKC,oBAAkB,WAAW;AAC9B,SAAI,KAAK,CAAC,MAAM;AAChB,SAAID,2BAAyB,SAAS;AACtC,SAAI;AACJ;IACJ,KAAKC,oBAAkB,WAAW;AAC9B,SAAID,2BAAyB,SAAS;AACtC,SAAI;AACJ;IACJ,KAAKC,oBAAkB,WAAW;AAC9B,SAAID,2BAAyB,SAAS;AACtC,SAAI;AACJ;IACJ,KAAKC,oBAAkB,WAAW;AAC9B,SAAI,KAAKE,YAAU,OAAO,KAAK,MAAM,CAAC,QAAQ;AAC9C,SAAIH,2BAAyB,SAAS;AACtC,SAAI;AACJ;IACJ,KAAKC,oBAAkB,WAAW;AAC9B,SAAI;AACJ;IACJ,KAAKA,oBAAkB,WAAW;AAC9B,SAAI,KAAKE,YAAU,OAAO,KAAK,MAAM,CAAC,QAAQ;AAC9C,SAAI;AACJ;;AAER,UAAO;IAAC;IAAG;IAAG,KAAK;IAAE;;;AAG7B,SAAQ,yBAAyB;;;;;;ACvOjC,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,mBAAmB,KAAK;CAChC,MAAMC;CACN,MAAMC;;;;;CAKN,SAAS,iBAAiB,MAAM;;;;;;;;;;;EAW5B,MAAM,MAAM,KAAK,mBACX,OAAO,OAAO,KAAK,iBAAiB,GACpC,OAAO,eAAe,EAAE,EAAEA,0BAAwB,cAAc,EAAE,OAAO,MAAM,CAAC;AACtF,OAAK,IAAI,SAAS,KAAK,QAAQ;GAC3B,IAAI,OAAO,MAAM;AACjB,OAAI,MAAM,IACN;AACJ,OAAI,MAAM,MACN,KAAI,MAAM,SAAS,EAAE,WAAW,QAAW;YACtC,MAAM,OACX,KAAI,QAAQ,EAAE;OAEd,SAAQ,MAAM,MAAd;IACI,KAAK;AACD,SAAI,QAAQD,8BAA4B,wBAAwB,MAAM,GAAG,MAAM,EAAE;AACjF;IACJ,KAAK;AAED,SAAI,QAAQ;AACZ;IACJ,KAAK;AACD,SAAI,QAAQ,EAAE;AACd;;;AAGhB,SAAO;;AAEX,SAAQ,mBAAmB;;;;;;AC9C3B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,yBAAyB,KAAK;;;;;;;;;;;;;;;;;;;;;;;CAuBtC,SAASE,yBAAuB,MAAM,QAAQ,QAAQ;EAClD,IAAI,YACJ,QAAQ,QAAQ;AAChB,OAAK,IAAI,SAAS,KAAK,QAAQ;GAC3B,IAAI,OAAO,MAAM;AACjB,OAAI,MAAM,OAAO;IACb,MAAM,QAAQ,MAAM,MAAM;AAC1B,SAAK,UAAU,QAAQ,UAAU,KAAK,IAAI,KAAK,IAAI,MAAM,cAAc,OACnE;AAEJ,iBAAa,MAAM;AACnB,aAAS,OAAO,MAAM;AACtB,WAAO,YAAY,MAAM;AACzB,QAAI,cAAc,QAAW;AACzB,YAAO,OAAO;AACd;;UAGH;AACD,iBAAa,MAAM;AACnB,aAAS;AACT,QAAI,cAAc,OACd;;AAGR,OAAI,MAAM,OACN,QAAO,MAAM,SAAS,WAAW;AAErC,WAAQ,MAAM,MAAd;IACI,KAAK;IACL,KAAK;AACD,SAAI,MAAM,OACN,MAAK,IAAI,IAAI,GAAG,IAAI,WAAW,QAAQ,IACnC,QAAO,MAAM,KAAK,WAAW;SAEjC,QAAO,QAAQ;AACnB;IACJ,KAAK;KACD,IAAI,IAAI,MAAM,GAAG;AACjB,SAAI,MAAM,OACN,MAAK,IAAI,IAAI,GAAG,IAAI,WAAW,QAAQ,IACnC,QAAO,MAAM,KAAK,EAAE,OAAO,WAAW,GAAG;cACxC,OAAO,UAAU,OACtB,QAAO,QAAQ,EAAE,OAAO,WAAW;SAEnC,GAAE,aAAa,OAAO,OAAO,WAAW;AAC5C;IACJ,KAAK;AAED,aAAQ,MAAM,EAAE,MAAhB;MACI,KAAK;MACL,KAAK;AACD,cAAO,OAAO,OAAO,OAAO,WAAW;AACvC;MACJ,KAAK;OACD,IAAIC,MAAI,MAAM,EAAE,GAAG;AACnB,YAAK,IAAI,KAAK,OAAO,KAAK,WAAW,CACjC,QAAO,MAAM,KAAKA,IAAE,OAAO,WAAW,GAAG;AAC7C;;AAER;;;;AAIhB,SAAQ,yBAAyBD;;;;;;ACxFjC,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,mBAAmB,KAAK;CAChC,MAAME;;;;;;;CAON,SAAS,iBAAiB,MAAM,GAAG,GAAG;AAClC,MAAI,MAAM,EACN,QAAO;AACX,MAAI,CAAC,KAAK,CAAC,EACP,QAAO;AACX,OAAK,IAAI,SAAS,KAAK,QAAQ;GAC3B,IAAI,YAAY,MAAM;GACtB,IAAI,QAAQ,MAAM,QAAQ,EAAE,MAAM,OAAO,aAAa,EAAE;GACxD,IAAI,QAAQ,MAAM,QAAQ,EAAE,MAAM,OAAO,aAAa,EAAE;AACxD,WAAQ,MAAM,MAAd;IACI,KAAK;IACL,KAAK;KACD,IAAI,IAAI,MAAM,QAAQ,SAASA,oBAAkB,WAAW,QAAQ,MAAM;AAC1E,SAAI,EAAE,MAAM,SACN,oBAAoB,GAAG,OAAO,MAAM,GACpC,YAAY,GAAG,OAAO,MAAM,EAC9B,QAAO;AACX;IACJ,KAAK;AACD,SAAI,EAAE,MAAM,EAAE,QAAQ,YAChB,cAAc,MAAM,EAAE,GAAG,EAAE,aAAa,MAAM,EAAE,aAAa,MAAM,CAAC,GACpE,oBAAoB,MAAM,EAAE,QAAQ,SAASA,oBAAkB,WAAW,QAAQ,MAAM,EAAE,GAAG,aAAa,MAAM,EAAE,aAAa,MAAM,CAAC,EACxI,QAAO;AACX;IACJ,KAAK;KACD,IAAI,IAAI,MAAM,GAAG;AACjB,SAAI,EAAE,MAAM,SACN,cAAc,GAAG,OAAO,MAAM,GAC9B,EAAE,OAAO,OAAO,MAAM,EACxB,QAAO;AACX;;;AAGZ,SAAO;;AAEX,SAAQ,mBAAmB;CAC3B,MAAM,eAAe,OAAO;CAC5B,SAAS,YAAY,MAAM,GAAG,GAAG;AAC7B,MAAI,MAAM,EACN,QAAO;AACX,MAAI,SAASA,oBAAkB,WAAW,MACtC,QAAO;EACX,IAAI,KAAK;EACT,IAAI,KAAK;AACT,MAAI,GAAG,WAAW,GAAG,OACjB,QAAO;AACX,OAAK,IAAI,IAAI,GAAG,IAAI,GAAG,QAAQ,IAC3B,KAAI,GAAG,MAAM,GAAG,GACZ,QAAO;AACf,SAAO;;CAEX,SAAS,oBAAoB,MAAM,GAAG,GAAG;AACrC,MAAI,EAAE,WAAW,EAAE,OACf,QAAO;AACX,OAAK,IAAI,IAAI,GAAG,IAAI,EAAE,QAAQ,IAC1B,KAAI,CAAC,YAAY,MAAM,EAAE,IAAI,EAAE,GAAG,CAC9B,QAAO;AACf,SAAO;;CAEX,SAAS,cAAc,MAAM,GAAG,GAAG;AAC/B,MAAI,EAAE,WAAW,EAAE,OACf,QAAO;AACX,OAAK,IAAI,IAAI,GAAG,IAAI,EAAE,QAAQ,IAC1B,KAAI,CAAC,KAAK,OAAO,EAAE,IAAI,EAAE,GAAG,CACxB,QAAO;AACf,SAAO;;;;;;;AC1EX,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,cAAc,KAAK;CAC3B,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAM,kBAAkB,OAAO,0BAA0B,OAAO,eAAe,EAAE,CAAC,CAAC;CACnF,MAAM,wBAAwB,gBAAgBb,0BAAwB,gBAAgB,EAAE;;;;;CAKxF,IAAMc,gBAAN,MAAkB;EACd,YAAY,MAAM,QAAQ,SAAS;AAC/B,QAAK,oBAAoB;AACzB,QAAK,WAAW;AAChB,QAAK,SAAS,OAAO,IAAIb,oBAAkB,mBAAmB;AAC9D,QAAK,UAAU,YAAY,QAAQ,YAAY,KAAK,IAAI,UAAU,EAAE;AACpE,yBAAsB,QAAQ;AAC9B,QAAK,mBAAmB,OAAO,OAAO,MAAM,gBAAgB;AAC5D,QAAK,eAAe,IAAIC,0BAAwB,oBAAoB,KAAK;AACzE,QAAK,gBAAgB,IAAIC,2BAAyB,qBAAqB,KAAK;AAC5E,QAAK,gBAAgB,IAAIC,2BAAyB,qBAAqB,KAAK;AAC5E,QAAK,eAAe,IAAIC,6BAA2B,uBAAuB,KAAK;AAC/E,QAAK,eAAe,IAAIC,6BAA2B,uBAAuB,KAAK;;EAEnF,OAAO,OAAO;GACV,IAAI,UAAUC,sBAAoB,iBAAiB,KAAK;AACxD,OAAI,UAAU,OACV,8BAA2B,uBAAuB,MAAM,SAAS,MAAM;AAE3E,UAAO;;;;;;;EAOX,MAAM,SAAS;GACX,IAAIQ,SAAO,KAAK,QAAQ;AACxB,gCAA2B,uBAAuB,MAAMA,QAAM,QAAQ;AACtE,UAAOA;;;;;;;;EAQX,OAAO,GAAG,GAAG;AACT,UAAOJ,sBAAoB,iBAAiB,MAAM,GAAG,EAAE;;;;;;EAM3D,GAAG,KAAK,QAAQ,KAAK,mBAAmB;AACpC,UAAO,KAAK,aAAa,GAAG,KAAK,OAAO,MAAM;;;;;;EAMlD,aAAa,KAAK,QAAQ,KAAK,mBAAmB;AAC9C,UAAO,KAAK,aAAa,GAAG,KAAK,OAAO,KAAK;;;;;EAKjD,aAAa,QAAQ,QAAQ;AACzB,gCAA2B,uBAAuB,MAAM,QAAQ,OAAO;;;;;EAK3E,WAAW,MAAM,SAAS;GACtB,IAAI,MAAME,kBAAgB,kBAAkB,QAAQ;AACpD,UAAO,KAAK,mBAAmB,IAAI,cAAc,KAAK,EAAE,KAAK,YAAY,IAAI;;;;;EAKjF,SAAS,MAAM,SAAS;AACpB,UAAO,KAAK,iBAAiB,MAAMH,yBAAuB,gBAAgB,QAAQ,CAAC;;;;;;EAMvF,eAAe,MAAM,SAAS;GAC1B,IAAI,QAAQ,KAAK,MAAM,KAAK;AAC5B,UAAO,KAAK,SAAS,OAAO,QAAQ;;;;;EAKxC,OAAO,SAAS,SAAS;AACrB,UAAO,KAAK,kBAAkB,SAASA,yBAAuB,iBAAiB,QAAQ,CAAC;;;;;;EAM5F,aAAa,SAAS,SAAS;GAC3B,IAAI;GACJ,IAAI,QAAQ,KAAK,OAAO,SAAS,QAAQ;AACzC,UAAO,KAAK,UAAU,OAAO,OAAO,KAAK,YAAY,QAAQ,YAAY,KAAK,IAAI,KAAK,IAAI,QAAQ,kBAAkB,QAAQ,OAAO,KAAK,IAAI,KAAK,EAAE;;;;;EAKxJ,SAAS,SAAS,SAAS;GACvB,IAAI,MAAME,kBAAgB,mBAAmB,QAAQ;AACrD,UAAO,KAAK,oBAAoB,SAAS,IAAI,eAAe,EAAE,IAAI,CAAC,QAAQ;;;;;;;;;;EAU/E,iBAAiB,MAAM,SAAS,QAAQ;AACpC,OAAI,SAAS,QAAQ,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,KAAK,EAAE;IAClE,IAAI,UAAU,WAAW,QAAQ,WAAW,KAAK,IAAI,SAAS,KAAK,QAAQ;AAC3E,SAAK,cAAc,KAAK,MAAM,SAAS,QAAQ;AAC/C,WAAO;;AAEX,SAAM,IAAI,MAAM,2BAA2B,KAAK,SAAS,aAAaH,iBAAe,gBAAgB,KAAK,CAAC,GAAG;;;;;;;;EAQlH,kBAAkB,SAAS,SAAS;AAChC,UAAO,KAAK,cAAc,MAAM,SAAS,QAAQ;;;;;;;;;EASrD,oBAAoB,SAAS,QAAQ,SAAS;AAC1C,QAAK,aAAa,MAAM,SAAS,QAAQ,QAAQ;AACjD,UAAO;;;;;;;;;;EAUX,mBAAmB,QAAQ,QAAQ,SAAS,QAAQ;GAChD,IAAI,UAAU,WAAW,QAAQ,WAAW,KAAK,IAAI,SAAS,KAAK,QAAQ;AAC3E,QAAK,aAAa,KAAK,QAAQ,SAAS,SAAS,OAAO;AACxD,UAAO;;;AAGf,SAAQ,cAAcK;;;;;;AC/KtB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,sBAAsB,KAAK;CACnC,MAAME;;;;;;;CAON,SAAS,oBAAoB,KAAK;AAC9B,SAAO,IAAIA,0BAAwB,iBAAiB;;AAExD,SAAQ,sBAAsB;;;;;;ACZ9B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,kBAAkB,QAAQ,gBAAgB,QAAQ,iBAAiB,QAAQ,eAAe,KAAK;;;;;;;;;CASvG,SAAS,aAAa,KAAK;AACvB,MAAI,OAAO,OAAO,YAAY,QAAQ,KAClC,QAAO;AAEX,MAAI,CAAC,IAAI,eAAe,EAAE,CACtB,QAAO;AAEX,OAAK,IAAI,KAAK,OAAO,KAAK,IAAI,EAAE;GAC5B,IAAI,MAAM,SAAS,EAAE;AACrB,OAAI,CAAC,OAAO,MAAM,IAAI,EAAE;IAEpB,IAAI,MAAM,IAAI;AACd,QAAI,QAAQ,OACR,QAAO;AAEX,QAAI,IAAI,SAAS,IACb,QAAO;UAEV;IAED,IAAIC,QAAM,IAAI;AACd,QAAIA,UAAQ,OACR,QAAO;AAEX,QAAI,OAAOA,UAAQ,SACf,QAAO;AAEX,QAAI,IAAIA,WAAS,OACb,QAAO;;;AAGnB,SAAO;;AAEX,SAAQ,eAAe;;;;;;;;;;;CAWvB,SAAS,eAAe,YAAY;AAChC,MAAI,CAAC,aAAa,WAAW,CACzB,OAAM,IAAI,MAAM,+BAA+B;EACnD,IAAI,SAAS,EAAE;AACf,OAAK,IAAI,CAAC,MAAM,WAAW,OAAO,QAAQ,WAAW,CACjD,KAAI,OAAO,UAAU,SACjB,QAAO,KAAK;GAAE;GAAM;GAAQ,CAAC;AACrC,SAAO;;AAEX,SAAQ,iBAAiB;;;;;;;CAOzB,SAAS,cAAc,YAAY;AAC/B,SAAO,eAAe,WAAW,CAAC,KAAI,QAAO,IAAI,KAAK;;AAE1D,SAAQ,gBAAgB;;;;;;;CAOxB,SAAS,gBAAgB,YAAY;AACjC,SAAO,eAAe,WAAW,CAC5B,KAAI,QAAO,IAAI,OAAO,CACtB,QAAQ,KAAK,OAAO,QAAQ,IAAI,QAAQ,IAAI,IAAI,MAAM;;AAE/D,SAAQ,kBAAkB;;;;;;AClF1B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;CAE7D,IAAI;AACJ,QAAO,eAAe,SAAS,mBAAmB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,eAAe;;EAAoB,CAAC;AACpI,QAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,eAAe;;EAAiB,CAAC;CAE9H,IAAI;AACJ,QAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,SAAS;;EAAiB,CAAC;AACxH,QAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,SAAS;;EAAiB,CAAC;CAExH,IAAI;AACJ,QAAO,eAAe,SAAS,YAAY;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,kBAAkB;;EAAa,CAAC;CAEzH,IAAI;AACJ,QAAO,eAAe,SAAS,YAAY;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,yBAAyB;;EAAa,CAAC;AAChI,QAAO,eAAe,SAAS,sBAAsB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,yBAAyB;;EAAuB,CAAC;AACpJ,QAAO,eAAe,SAAS,uBAAuB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,yBAAyB;;EAAwB,CAAC;CAEtJ,IAAI;AACJ,QAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,gBAAgB;;EAAiB,CAAC;AAC/H,QAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,gBAAgB;;EAAsB,CAAC;CAEzI,IAAI;AACJ,QAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,gBAAgB;;EAAiB,CAAC;AAC/H,QAAO,eAAe,SAAS,sBAAsB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,gBAAgB;;EAAuB,CAAC;CAE3I,IAAI;AACJ,QAAO,eAAe,SAAS,UAAU;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,UAAU;;EAAW,CAAC;AAC7G,QAAO,eAAe,SAAS,WAAW;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,UAAU;;EAAY,CAAC;CAE/G,IAAI;AACJ,QAAO,eAAe,SAAS,mBAAmB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,uBAAuB;;EAAoB,CAAC;AAC5I,QAAO,eAAe,SAAS,oBAAoB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,uBAAuB;;EAAqB,CAAC;AAC9I,QAAO,eAAe,SAAS,oBAAoB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,uBAAuB;;EAAqB,CAAC;CAE9I,IAAI;AACJ,QAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,wBAAwB;;EAAiB,CAAC;CAEvI,IAAI;AACJ,QAAO,eAAe,SAAS,eAAe;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,eAAe;;EAAgB,CAAC;CAE5H,IAAIC;AACJ,QAAO,eAAe,SAAS,cAAc;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,oBAAkB;;EAAe,CAAC;AAC7H,QAAO,eAAe,SAAS,YAAY;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,oBAAkB;;EAAa,CAAC;AACzH,QAAO,eAAe,SAAS,cAAc;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,oBAAkB;;EAAe,CAAC;AAC7H,QAAO,eAAe,SAAS,sBAAsB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,oBAAkB;;EAAuB,CAAC;AAC7I,QAAO,eAAe,SAAS,oBAAoB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,oBAAkB;;EAAqB,CAAC;AACzI,QAAO,eAAe,SAAS,mBAAmB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,oBAAkB;;EAAoB,CAAC;AACvI,QAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,oBAAkB;;EAAsB,CAAC;CAE3I,IAAI;AACJ,QAAO,eAAe,SAAS,uBAAuB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,wBAAwB;;EAAwB,CAAC;CACrJ,IAAI;AACJ,QAAO,eAAe,SAAS,oBAAoB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,oBAAoB;;EAAqB,CAAC;CAC3I,IAAI;AACJ,QAAO,eAAe,SAAS,2BAA2B;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,4BAA4B;;EAA4B,CAAC;CACjK,IAAI;AACJ,QAAO,eAAe,SAAS,0BAA0B;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,2BAA2B;;EAA2B,CAAC;CAC9J,IAAI;AACJ,QAAO,eAAe,SAAS,oBAAoB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,oBAAoB;;EAAqB,CAAC;CAC3I,IAAI;AACJ,QAAO,eAAe,SAAS,0BAA0B;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,2BAA2B;;EAA2B,CAAC;CAC9J,IAAI;AACJ,QAAO,eAAe,SAAS,0BAA0B;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,2BAA2B;;EAA2B,CAAC;CAC9J,IAAI;AACJ,QAAO,eAAe,SAAS,wBAAwB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,yBAAyB;;EAAyB,CAAC;CACxJ,IAAI;AACJ,QAAO,eAAe,SAAS,wBAAwB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,yBAAyB;;EAAyB,CAAC;CACxJ,IAAI;AACJ,QAAO,eAAe,SAAS,uBAAuB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,mCAAmC;;EAAwB,CAAC;CAEhK,IAAI;AACJ,QAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,QAAQ;;EAAiB,CAAC;AACvH,QAAO,eAAe,SAAS,iBAAiB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,QAAQ;;EAAkB,CAAC;AACzH,QAAO,eAAe,SAAS,iBAAiB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,QAAQ;;EAAkB,CAAC;AACzH,QAAO,eAAe,SAAS,mBAAmB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,QAAQ;;EAAoB,CAAC;AAC7H,QAAO,eAAe,SAAS,yBAAyB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,QAAQ;;EAA0B,CAAC;CAEzI,IAAI;AACJ,QAAO,eAAe,SAAS,kBAAkB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,cAAc;;EAAmB,CAAC;AACjI,QAAO,eAAe,SAAS,iBAAiB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,cAAc;;EAAkB,CAAC;AAC/H,QAAO,eAAe,SAAS,mBAAmB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,cAAc;;EAAoB,CAAC;AACnI,QAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,cAAc;;EAAiB,CAAC;CAE7H,IAAI;AACJ,QAAO,eAAe,SAAS,kBAAkB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,mBAAmB;;EAAmB,CAAC;CAEtI,IAAI;AACJ,QAAO,eAAe,SAAS,UAAU;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,SAAS;;EAAW,CAAC;AAC5G,QAAO,eAAe,SAAS,eAAe;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,SAAS;;EAAgB,CAAC;AACtH,QAAO,eAAe,SAAS,eAAe;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,SAAS;;EAAgB,CAAC;AACtH,QAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,SAAS;;EAAiB,CAAC;AACxH,QAAO,eAAe,SAAS,iBAAiB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,SAAS;;EAAkB,CAAC;;;;;;;;;;;;;;ACrF1H,IAAI,YAA4B,yBAAS,aAAa;;;;;;AAMrD,aAAY,YAAY,gBAAgB,KAAK;AAC7C,QAAO;EACN,EAAE,CAAC;AACL,IAAI,cAAc,cAAcC,+BAAY;CAC3C,cAAc;AACb,QAAM,0BAA0B,CAAC;GAChC,IAAI;GACJ,MAAM;GACN,MAAM;GACN,GAAG;GACH,GAAG;IACF,MAAM;IACN,SAAS;IACT;GACD,CAAC,CAAC;;;;;CAKJ,kBAAkB,SAAS,SAAS;EACnC,IAAI,OAAO,EAAE;AACb,OAAK,IAAI,CAAC,GAAG,MAAM,OAAO,QAAQ,QAAQ,OAAO,CAAE,MAAK,KAAK,MAAM,OAAO,EAAE;AAC5E,SAAO;;;;;CAKR,iBAAiB,MAAM,SAAS,QAAQ;AACvC,MAAI,sCAAc,KAAK,CAAE,OAAM,IAAI,WAAW,MAAM,6BAA6B,KAAK,WAAW,wDAAgC,KAAK,GAAG,IAAI;AAC7I,MAAI,CAAC,OAAQ,UAAS,KAAK,QAAQ;AACnC,OAAK,IAAI,CAAC,GAAG,MAAM,WAAW,OAAO,QAAQ,KAAK,CAAE,QAAO,OAAO,KAAK,MAAM,SAAS,EAAE;AACxF,SAAO;;CAER,OAAO,OAAO;EACb,MAAM,UAAU,WAAW,OAAO,OAAO,KAAK,iBAAiB;AAC/D,UAAQ,SAAS,EAAE;AACnB,MAAI,UAAU,KAAK,EAAG,gDAAuB,MAAM,SAAS,MAAM;AAClE,SAAO;;CAER,mBAAmB,QAAQ,QAAQ,SAAS,QAAQ;EACnD,IAAI,UAAU,UAAU,KAAK,QAAQ,EAAE,MAAM,OAAO,MAAM;AAC1D,SAAO,OAAO,MAAM,KAAK;GACxB,IAAI,CAAC,SAAS,YAAY,OAAO,KAAK;AACtC,WAAQ,SAAR;IACC,KAAK;AACJ,UAAK,eAAe,QAAQ,QAAQ,QAAQ,QAAQ;AACpD;IACD;KACC,IAAI,IAAI,QAAQ;AAChB,SAAI,MAAM,QAAS,OAAM,IAAI,WAAW,MAAM,iBAAiB,QAAQ,cAAc,SAAS,QAAQ,KAAK,WAAW;KACtH,IAAI,IAAI,OAAO,KAAK,SAAS;AAC7B,SAAI,MAAM,MAAO,EAAC,MAAM,OAAOC,uCAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,EAAE;;;AAG/G,SAAO;;CAER,eAAe,KAAK,QAAQ,SAAS;EACpC,IAAI,MAAM,OAAO,QAAQ,EAAE,MAAM,OAAO,MAAM,KAAK,KAAK;AACxD,SAAO,OAAO,MAAM,KAAK;GACxB,IAAI,CAAC,SAAS,YAAY,OAAO,KAAK;AACtC,WAAQ,SAAR;IACC,KAAK;AACJ,WAAM,OAAO,QAAQ;AACrB;IACD,KAAK;AACJ,WAAM,MAAM,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,QAAQ;AAChE;IACD,QAAS,OAAM,IAAI,WAAW,MAAM,4DAA4D;;;AAGlG,MAAI,OAAO,MAAM,OAAO,MAAM,QAAQ;;CAEvC,oBAAoB,SAAS,QAAQ,SAAS;AAC7C,OAAK,IAAI,KAAK,WAAW,OAAO,KAAK,QAAQ,OAAO,EAAE;AACrD,UAAO,IAAI,GAAGC,4BAAS,gBAAgB,CAAC,MAAM,CAAC,IAAI,GAAGA,4BAAS,gBAAgB,CAAC,OAAO,EAAE;AACzF,UAAO,IAAI,GAAGA,4BAAS,gBAAgB,CAAC,MAAM;AAC9C,SAAM,oBAAoB,QAAQ,OAAO,IAAI,QAAQ,QAAQ;AAC7D,UAAO,MAAM,CAAC,MAAM;;EAErB,IAAI,IAAI,QAAQ;AAChB,MAAI,MAAM,MAAO,EAAC,KAAK,OAAOD,uCAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,OAAO;AAC9F,SAAO;;;;;;AAMT,MAAM,SAAS,IAAI,aAAa;AAChC,IAAI,aAAa,cAAcD,+BAAY;CAC1C,cAAc;AACb,QAAM,yBAAyB;GAC9B;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,OAAO;IACP,SAAS,CAAC,6BAA6B,UAAU;IACjD;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,OAAO;IACP,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,OAAO;IACP,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,OAAO;IACP,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,OAAO;IACP,SAAS;IACT;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,OAAO;IACP,SAAS;IACT;GACD,CAAC;;;;;CAKH,kBAAkB,SAAS,SAAS;AACnC,MAAI,QAAQ,KAAK,cAAc,KAAK,EAAG,OAAM,IAAI,WAAW,OAAO;AACnE,UAAQ,QAAQ,KAAK,WAArB;GACC,KAAK,KAAK,EAAG,OAAM,IAAI,WAAW,OAAO;GACzC,KAAK,YAAa,QAAO,QAAQ,KAAK;GACtC,KAAK,YAAa,QAAO;GACzB,KAAK;IACJ,IAAI,cAAc,QAAQ,KAAK;AAC/B,QAAI,OAAO,eAAe,YAAY,CAAC,OAAO,SAAS,YAAY,CAAE,OAAM,IAAI,WAAW,OAAO;AACjG,WAAO;GACR,KAAK,cAAe,QAAO,QAAQ,KAAK;GACxC,KAAK;IACJ,IAAI,iBAAiB,KAAK,OAAO,MAAM,MAAM,EAAE,OAAO,EAAE;AACxD,QAAI,gBAAgB,SAAS,UAAW,OAAM,IAAI,WAAW,OAAO;AACpE,WAAO,eAAe,GAAG,CAAC,OAAO,QAAQ,KAAK,UAAU;GACzD,KAAK;IACJ,IAAI,mBAAmB,KAAK,OAAO,MAAM,MAAM,EAAE,OAAO,EAAE;AAC1D,QAAI,kBAAkB,SAAS,UAAW,OAAM,IAAI,WAAW,OAAO;AACtE,WAAO,iBAAiB,GAAG,CAAC,OAAO,QAAQ,KAAK,YAAY;;;;;;CAM/D,iBAAiB,MAAM,SAAS,QAAQ;AACvC,MAAI,CAAC,OAAQ,UAAS,KAAK,QAAQ;AACnC,UAAQ,OAAO,MAAf;GACC,KAAK;AACJ,WAAO,OAAO;KACb,WAAW;KACX,aAAa;KACb;AACD;GACD,KAAK;AACJ,WAAO,OAAO;KACb,WAAW;KACX,aAAa;KACb;AACD;GACD,KAAK;AACJ,WAAO,OAAO;KACb,WAAW;KACX,WAAW;KACX;AACD;GACD,KAAK;AACJ,QAAI,SAAS,KAAM,QAAO,OAAO;KAChC,WAAW;KACX,WAAW,UAAU;KACrB;aACQ,WAAW,MAAM,QAAQ,KAAK,CAAE,QAAO,OAAO;KACtD,WAAW;KACX,WAAW,UAAU,SAAS,KAAK;KACnC;QACI,QAAO,OAAO;KAClB,WAAW;KACX,aAAa,OAAO,SAAS,KAAK;KAClC;AACD;GACD,QAAS,OAAM,IAAI,WAAW,MAAM,qBAAqB,KAAK,WAAW,wDAAgC,KAAK,CAAC;;AAEhH,SAAO;;CAER,OAAO,OAAO;EACb,MAAM,UAAU,WAAW,OAAO,OAAO,KAAK,iBAAiB;AAC/D,UAAQ,OAAO,EAAE,WAAW,KAAK,GAAG;AACpC,MAAI,UAAU,KAAK,EAAG,gDAAuB,MAAM,SAAS,MAAM;AAClE,SAAO;;CAER,mBAAmB,QAAQ,QAAQ,SAAS,QAAQ;EACnD,IAAI,UAAU,UAAU,KAAK,QAAQ,EAAE,MAAM,OAAO,MAAM;AAC1D,SAAO,OAAO,MAAM,KAAK;GACxB,IAAI,CAAC,SAAS,YAAY,OAAO,KAAK;AACtC,WAAQ,SAAR;IACC,KAAK;AACJ,aAAQ,OAAO;MACd,WAAW;MACX,WAAW,OAAO,OAAO;MACzB;AACD;IACD,KAAK;AACJ,aAAQ,OAAO;MACd,WAAW;MACX,aAAa,OAAO,QAAQ;MAC5B;AACD;IACD,KAAK;AACJ,aAAQ,OAAO;MACd,WAAW;MACX,aAAa,OAAO,QAAQ;MAC5B;AACD;IACD,KAAK;AACJ,aAAQ,OAAO;MACd,WAAW;MACX,WAAW,OAAO,MAAM;MACxB;AACD;IACD,KAAK;AACJ,aAAQ,OAAO;MACd,WAAW;MACX,aAAa,OAAO,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,SAAS,QAAQ,KAAK,YAAY;MAClG;AACD;IACD,KAAK;AACJ,aAAQ,OAAO;MACd,WAAW;MACX,WAAW,UAAU,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,SAAS,QAAQ,KAAK,UAAU;MACjG;AACD;IACD;KACC,IAAI,IAAI,QAAQ;AAChB,SAAI,MAAM,QAAS,OAAM,IAAI,WAAW,MAAM,iBAAiB,QAAQ,cAAc,SAAS,QAAQ,KAAK,WAAW;KACtH,IAAI,IAAI,OAAO,KAAK,SAAS;AAC7B,SAAI,MAAM,MAAO,EAAC,MAAM,OAAOC,uCAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,EAAE;;;AAG/G,SAAO;;CAER,oBAAoB,SAAS,QAAQ,SAAS;AAC7C,MAAI,QAAQ,KAAK,cAAc,YAAa,QAAO,IAAI,GAAGC,4BAAS,OAAO,CAAC,MAAM,QAAQ,KAAK,UAAU;AACxG,MAAI,QAAQ,KAAK,cAAc,cAAe,QAAO,IAAI,GAAGA,4BAAS,MAAM,CAAC,OAAO,QAAQ,KAAK,YAAY;AAC5G,MAAI,QAAQ,KAAK,cAAc,cAAe,QAAO,IAAI,GAAGA,4BAAS,gBAAgB,CAAC,OAAO,QAAQ,KAAK,YAAY;AACtH,MAAI,QAAQ,KAAK,cAAc,YAAa,QAAO,IAAI,GAAGA,4BAAS,OAAO,CAAC,KAAK,QAAQ,KAAK,UAAU;AACvG,MAAI,QAAQ,KAAK,cAAc,cAAe,QAAO,oBAAoB,QAAQ,KAAK,aAAa,OAAO,IAAI,GAAGA,4BAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM;AAClK,MAAI,QAAQ,KAAK,cAAc,YAAa,WAAU,oBAAoB,QAAQ,KAAK,WAAW,OAAO,IAAI,GAAGA,4BAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM;EACjK,IAAI,IAAI,QAAQ;AAChB,MAAI,MAAM,MAAO,EAAC,KAAK,OAAOD,uCAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,OAAO;AAC9F,SAAO;;;;;;AAMT,MAAM,QAAQ,IAAI,YAAY;AAC9B,IAAI,iBAAiB,cAAcD,+BAAY;CAC9C,cAAc;AACb,QAAM,6BAA6B,CAAC;GACnC,IAAI;GACJ,MAAM;GACN,MAAM;GACN,QAAQ;GACR,SAAS;GACT,CAAC,CAAC;;;;;CAKJ,kBAAkB,SAAS,SAAS;AACnC,SAAO,QAAQ,OAAO,KAAK,MAAM,MAAM,OAAO,EAAE,CAAC;;;;;CAKlD,iBAAiB,MAAM,SAAS,QAAQ;AACvC,MAAI,CAAC,WAAW,MAAM,QAAQ,KAAK,CAAE,OAAM,IAAI,WAAW,MAAM,qBAAqB,KAAK,WAAW,wDAAgC,KAAK,CAAC;AAC3I,MAAI,CAAC,OAAQ,UAAS,KAAK,QAAQ;EACnC,IAAI,SAAS,KAAK,KAAK,MAAM,MAAM,SAAS,EAAE,CAAC;AAC/C,SAAO,OAAO,KAAK,GAAG,OAAO;AAC7B,SAAO;;CAER,OAAO,OAAO;EACb,MAAM,UAAU,WAAW,OAAO,OAAO,KAAK,iBAAiB;AAC/D,UAAQ,SAAS,EAAE;AACnB,MAAI,UAAU,KAAK,EAAG,gDAAuB,MAAM,SAAS,MAAM;AAClE,SAAO;;CAER,mBAAmB,QAAQ,QAAQ,SAAS,QAAQ;EACnD,IAAI,UAAU,UAAU,KAAK,QAAQ,EAAE,MAAM,OAAO,MAAM;AAC1D,SAAO,OAAO,MAAM,KAAK;GACxB,IAAI,CAAC,SAAS,YAAY,OAAO,KAAK;AACtC,WAAQ,SAAR;IACC,KAAK;AACJ,aAAQ,OAAO,KAAK,MAAM,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,QAAQ,CAAC;AAC/E;IACD;KACC,IAAI,IAAI,QAAQ;AAChB,SAAI,MAAM,QAAS,OAAM,IAAI,WAAW,MAAM,iBAAiB,QAAQ,cAAc,SAAS,QAAQ,KAAK,WAAW;KACtH,IAAI,IAAI,OAAO,KAAK,SAAS;AAC7B,SAAI,MAAM,MAAO,EAAC,MAAM,OAAOC,uCAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,EAAE;;;AAG/G,SAAO;;CAER,oBAAoB,SAAS,QAAQ,SAAS;AAC7C,OAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,OAAO,QAAQ,IAAK,OAAM,oBAAoB,QAAQ,OAAO,IAAI,OAAO,IAAI,GAAGC,4BAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM;EAC5J,IAAI,IAAI,QAAQ;AAChB,MAAI,MAAM,MAAO,EAAC,KAAK,OAAOD,uCAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,OAAO;AAC9F,SAAO;;;;;;AAMT,MAAM,YAAY,IAAI,gBAAgB;;;;;AC7UtC,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,cAAc,KAAK;;AAG3B,SAAQ,cAAc,OAAO,eAAe,WAAW,aAAa;;;;;;CCJpE,IAAIE,uCAAgC,oBAAqB,OAAO,UAAU,SAAS,GAAG,GAAG,GAAG,IAAI;AAC5F,MAAI,OAAO,OAAW,MAAK;AAC3B,SAAO,eAAe,GAAG,IAAI;GAAE,YAAY;GAAM,KAAK,WAAW;AAAE,WAAO,EAAE;;GAAO,CAAC;OAClF,SAAS,GAAG,GAAG,GAAG,IAAI;AACxB,MAAI,OAAO,OAAW,MAAK;AAC3B,IAAE,MAAM,EAAE;;CAEd,IAAIC,oCAA6B,gBAAiB,SAAS,GAAG,WAAS;AACnE,OAAK,IAAI,KAAK,EAAG,KAAI,MAAM,aAAa,CAAC,OAAO,UAAU,eAAe,KAAKC,WAAS,EAAE,CAAE,mBAAgBA,WAAS,GAAG,EAAE;;AAE7H,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,wCAAsC,QAAQ;;;;;;CCX9C,IAAI,qCAAgC,oBAAqB,OAAO,UAAU,SAAS,GAAG,GAAG,GAAG,IAAI;AAC5F,MAAI,OAAO,OAAW,MAAK;AAC3B,SAAO,eAAe,GAAG,IAAI;GAAE,YAAY;GAAM,KAAK,WAAW;AAAE,WAAO,EAAE;;GAAO,CAAC;OAClF,SAAS,GAAG,GAAG,GAAG,IAAI;AACxB,MAAI,OAAO,OAAW,MAAK;AAC3B,IAAE,MAAM,EAAE;;CAEd,IAAI,kCAA6B,gBAAiB,SAAS,GAAG,WAAS;AACnE,OAAK,IAAI,KAAK,EAAG,KAAI,MAAM,aAAa,CAAC,OAAO,UAAU,eAAe,KAAKC,WAAS,EAAE,CAAE,iBAAgBA,WAAS,GAAG,EAAE;;AAE7H,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,gCAAgC,QAAQ;;;;;;ACXxC,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,UAAU,KAAK;AAEvB,SAAQ,UAAU;;;;;;ACHlB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,eAAe,QAAQ,0BAA0B,KAAK;CAC9D,MAAMC;CACN,MAAM,KAAK;;;;;;;;;;;;;;;;;CAiBX,SAAS,wBAAwB,YAAY;EACzC,MAAM,mBAAmB,IAAI,IAAI,CAAC,WAAW,CAAC;EAC9C,MAAM,mCAAmB,IAAI,KAAK;EAClC,MAAM,iBAAiB,WAAW,MAAM,GAAG;AAC3C,MAAI,CAAC,eAED,cAAa;EAEjB,MAAM,mBAAmB;GACrB,OAAO,CAAC,eAAe;GACvB,OAAO,CAAC,eAAe;GACvB,OAAO,CAAC,eAAe;GACvB,YAAY,eAAe;GAC9B;AAED,MAAI,iBAAiB,cAAc,KAC/B,QAAO,SAAS,aAAa,eAAe;AACxC,UAAO,kBAAkB;;EAGjC,SAAS,QAAQ,GAAG;AAChB,oBAAiB,IAAI,EAAE;AACvB,UAAO;;EAEX,SAAS,QAAQ,GAAG;AAChB,oBAAiB,IAAI,EAAE;AACvB,UAAO;;AAEX,SAAO,SAAS,aAAa,eAAe;AACxC,OAAI,iBAAiB,IAAI,cAAc,CACnC,QAAO;AAEX,OAAI,iBAAiB,IAAI,cAAc,CACnC,QAAO;GAEX,MAAM,qBAAqB,cAAc,MAAM,GAAG;AAClD,OAAI,CAAC,mBAGD,QAAO,QAAQ,cAAc;GAEjC,MAAM,sBAAsB;IACxB,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,mBAAmB;IAC3B,YAAY,mBAAmB;IAClC;AAED,OAAI,oBAAoB,cAAc,KAClC,QAAO,QAAQ,cAAc;AAGjC,OAAI,iBAAiB,UAAU,oBAAoB,MAC/C,QAAO,QAAQ,cAAc;AAEjC,OAAI,iBAAiB,UAAU,GAAG;AAC9B,QAAI,iBAAiB,UAAU,oBAAoB,SAC/C,iBAAiB,SAAS,oBAAoB,MAC9C,QAAO,QAAQ,cAAc;AAEjC,WAAO,QAAQ,cAAc;;AAEjC,OAAI,iBAAiB,SAAS,oBAAoB,MAC9C,QAAO,QAAQ,cAAc;AAEjC,UAAO,QAAQ,cAAc;;;AAGrC,SAAQ,0BAA0B;;;;;;;;;;;;;;;;AAgBlC,SAAQ,eAAe,wBAAwBA,YAAU,QAAQ;;;;;;ACxGjE,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,mBAAmB,QAAQ,YAAY,QAAQ,iBAAiB,KAAK;CAC7E,MAAMC;CACN,MAAMC;CACN,MAAM;CACN,MAAM,QAAQA,YAAU,QAAQ,MAAM,IAAI,CAAC;CAC3C,MAAM,+BAA+B,OAAO,IAAI,2BAA2B,QAAQ;CACnF,MAAM,UAAUD,aAAW;CAC3B,SAAS,eAAe,MAAM,UAAU,QAAM,gBAAgB,OAAO;EACjE,IAAI;EACJ,MAAME,QAAO,QAAQ,iCAAiC,KAAK,QAAQ,mCAAmC,QAAQ,OAAO,KAAK,IAAI,KAAK,EAC/H,SAASD,YAAU,SACtB;AACD,MAAI,CAAC,iBAAiBC,MAAI,OAAO;GAE7B,MAAM,sBAAM,IAAI,MAAM,gEAAgE,OAAO;AAC7F,UAAK,MAAM,IAAI,SAAS,IAAI,QAAQ;AACpC,UAAO;;AAEX,MAAIA,MAAI,YAAYD,YAAU,SAAS;GAEnC,MAAM,sBAAM,IAAI,MAAM,gDAAgDC,MAAI,QAAQ,OAAO,KAAK,6CAA6CD,YAAU,UAAU;AAC/J,UAAK,MAAM,IAAI,SAAS,IAAI,QAAQ;AACpC,UAAO;;AAEX,QAAI,QAAQ;AACZ,SAAK,MAAM,+CAA+C,KAAK,IAAIA,YAAU,QAAQ,GAAG;AACxF,SAAO;;AAEX,SAAQ,iBAAiB;CACzB,SAAS,UAAU,MAAM;EACrB,IAAI,IAAI;EACR,MAAM,iBAAiB,KAAK,QAAQ,mCAAmC,QAAQ,OAAO,KAAK,IAAI,KAAK,IAAI,GAAG;AAC3G,MAAI,CAAC,iBAAiB,EAAE,GAAG,SAAS,cAAc,cAAc,CAC5D;AAEJ,UAAQ,KAAK,QAAQ,mCAAmC,QAAQ,OAAO,KAAK,IAAI,KAAK,IAAI,GAAG;;AAEhG,SAAQ,YAAY;CACpB,SAAS,iBAAiB,MAAM,QAAM;AAClC,SAAK,MAAM,kDAAkD,KAAK,IAAIA,YAAU,QAAQ,GAAG;EAC3F,MAAMC,QAAM,QAAQ;AACpB,MAAIA,MACA,QAAOA,MAAI;;AAGnB,SAAQ,mBAAmB;;;;;;AC9C3B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,sBAAsB,KAAK;CACnC,MAAMC;;;;;;;;;;CAUN,IAAM,sBAAN,MAA0B;EACtB,YAAY,OAAO;AACf,QAAK,aAAa,MAAM,aAAa;;EAEzC,MAAM,GAAG,MAAM;AACX,UAAO,SAAS,SAAS,KAAK,YAAY,KAAK;;EAEnD,MAAM,GAAG,MAAM;AACX,UAAO,SAAS,SAAS,KAAK,YAAY,KAAK;;EAEnD,KAAK,GAAG,MAAM;AACV,UAAO,SAAS,QAAQ,KAAK,YAAY,KAAK;;EAElD,KAAK,GAAG,MAAM;AACV,UAAO,SAAS,QAAQ,KAAK,YAAY,KAAK;;EAElD,QAAQ,GAAG,MAAM;AACb,UAAO,SAAS,WAAW,KAAK,YAAY,KAAK;;;AAGzD,SAAQ,sBAAsB;CAC9B,SAAS,SAAS,UAAU,WAAW,MAAM;EACzC,MAAMC,YAAU,GAAGD,iBAAe,WAAW,OAAO;AAEpD,MAAI,CAACC,SACD;AAEJ,OAAK,QAAQ,UAAU;AACvB,SAAOA,SAAO,UAAU,GAAG,KAAK;;;;;;;ACxCpC,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,eAAe,KAAK;AAO5B,EAAC,SAAU,cAAc;;AAErB,eAAa,aAAa,UAAU,KAAK;;AAEzC,eAAa,aAAa,WAAW,MAAM;;AAE3C,eAAa,aAAa,UAAU,MAAM;;AAE1C,eAAa,aAAa,UAAU,MAAM;;AAE1C,eAAa,aAAa,WAAW,MAAM;;;;;AAK3C,eAAa,aAAa,aAAa,MAAM;;AAE7C,eAAa,aAAa,SAAS,QAAQ;IAC7B,QAAQ,iBAAiB,QAAQ,eAAe,EAAE,EAAE;;;;;;AC1BtE,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,2BAA2B,KAAK;CACxC,MAAMC;CACN,SAAS,yBAAyB,UAAU,UAAQ;AAChD,MAAI,WAAWA,UAAQ,aAAa,KAChC,YAAWA,UAAQ,aAAa;WAE3B,WAAWA,UAAQ,aAAa,IACrC,YAAWA,UAAQ,aAAa;AAGpC,aAASC,YAAU,EAAE;EACrB,SAAS,YAAY,UAAU,UAAU;GACrC,MAAM,UAAUA,SAAO;AACvB,OAAI,OAAO,YAAY,cAAc,YAAY,SAC7C,QAAO,QAAQ,KAAKA,SAAO;AAE/B,UAAO,WAAY;;AAEvB,SAAO;GACH,OAAO,YAAY,SAASD,UAAQ,aAAa,MAAM;GACvD,MAAM,YAAY,QAAQA,UAAQ,aAAa,KAAK;GACpD,MAAM,YAAY,QAAQA,UAAQ,aAAa,KAAK;GACpD,OAAO,YAAY,SAASA,UAAQ,aAAa,MAAM;GACvD,SAAS,YAAY,WAAWA,UAAQ,aAAa,QAAQ;GAChE;;AAEL,SAAQ,2BAA2B;;;;;;AC3BnC,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,UAAU,KAAK;CACvB,MAAM;CACN,MAAM;CACN,MAAME;CACN,MAAMC;CACN,MAAMC,aAAW;;;;;CAKjB,IAAM,UAAN,MAAM,QAAQ;;;;;EAKV,cAAc;GACV,SAAS,UAAU,UAAU;AACzB,WAAO,SAAU,GAAG,MAAM;KACtB,MAAMC,YAAU,GAAGF,iBAAe,WAAW,OAAO;AAEpD,SAAI,CAACE,SACD;AACJ,YAAOA,SAAO,UAAU,GAAG,KAAK;;;GAIxC,MAAM,OAAO;GAEb,MAAM,aAAa,UAAQ,oBAAoB,EAAE,UAAUH,UAAQ,aAAa,MAAM,KAAK;IACvF,IAAI,IAAI,IAAI;AACZ,QAAIG,aAAW,MAAM;KAIjB,MAAM,sBAAM,IAAI,MAAM,qIAAqI;AAC3J,UAAK,OAAO,KAAK,IAAI,WAAW,QAAQ,OAAO,KAAK,IAAI,KAAK,IAAI,QAAQ;AACzE,YAAO;;AAEX,QAAI,OAAO,sBAAsB,SAC7B,qBAAoB,EAChB,UAAU,mBACb;IAEL,MAAM,aAAa,GAAGF,iBAAe,WAAW,OAAO;IACvD,MAAM,aAAa,GAAG,iBAAiB,2BAA2B,KAAK,kBAAkB,cAAc,QAAQ,OAAO,KAAK,IAAI,KAAKD,UAAQ,aAAa,MAAMG,SAAO;AAEtK,QAAI,aAAa,CAAC,kBAAkB,yBAAyB;KACzD,MAAM,SAAS,sBAAK,IAAI,OAAO,EAAC,WAAW,QAAQ,OAAO,KAAK,IAAI,KAAK;AACxE,eAAU,KAAK,2CAA2C,QAAQ;AAClE,eAAU,KAAK,6DAA6D,QAAQ;;AAExF,YAAQ,GAAGF,iBAAe,gBAAgB,QAAQ,WAAW,MAAM,KAAK;;AAE5E,QAAK,YAAY;AACjB,QAAK,gBAAgB;AACjB,KAAC,GAAGA,iBAAe,kBAAkBC,YAAU,KAAK;;AAExD,QAAK,yBAAyB,YAAY;AACtC,WAAO,IAAI,kBAAkB,oBAAoB,QAAQ;;AAE7D,QAAK,UAAU,UAAU,UAAU;AACnC,QAAK,QAAQ,UAAU,QAAQ;AAC/B,QAAK,OAAO,UAAU,OAAO;AAC7B,QAAK,OAAO,UAAU,OAAO;AAC7B,QAAK,QAAQ,UAAU,QAAQ;;;EAGnC,OAAO,WAAW;AACd,OAAI,CAAC,KAAK,UACN,MAAK,YAAY,IAAI,SAAS;AAElC,UAAO,KAAK;;;AAGpB,SAAQ,UAAU;;;;;;AC3ElB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,cAAc,KAAK;CAC3B,IAAM,cAAN,MAAM,YAAY;EACd,YAAY,SAAS;AACjB,QAAK,WAAW,UAAU,IAAI,IAAI,QAAQ,mBAAG,IAAI,KAAK;;EAE1D,SAAS,KAAK;GACV,MAAM,QAAQ,KAAK,SAAS,IAAI,IAAI;AACpC,OAAI,CAAC,MACD;AAEJ,UAAO,OAAO,OAAO,EAAE,EAAE,MAAM;;EAEnC,gBAAgB;AACZ,UAAO,MAAM,KAAK,KAAK,SAAS,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;;EAEtE,SAAS,KAAK,OAAO;GACjB,MAAM,aAAa,IAAI,YAAY,KAAK,SAAS;AACjD,cAAW,SAAS,IAAI,KAAK,MAAM;AACnC,UAAO;;EAEX,YAAY,KAAK;GACb,MAAM,aAAa,IAAI,YAAY,KAAK,SAAS;AACjD,cAAW,SAAS,OAAO,IAAI;AAC/B,UAAO;;EAEX,cAAc,GAAG,MAAM;GACnB,MAAM,aAAa,IAAI,YAAY,KAAK,SAAS;AACjD,QAAK,MAAM,OAAO,KACd,YAAW,SAAS,OAAO,IAAI;AAEnC,UAAO;;EAEX,QAAQ;AACJ,UAAO,IAAI,aAAa;;;AAGhC,SAAQ,cAAc;;;;;;ACrCtB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,6BAA6B,KAAK;;;;AAI1C,SAAQ,6BAA6B,OAAO,uBAAuB;;;;;;ACLnE,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,iCAAiC,QAAQ,gBAAgB,KAAK;CACtE,MAAME;CACN,MAAM;CACN,MAAM;CACN,MAAM,OAAOA,SAAO,QAAQ,UAAU;;;;;;CAMtC,SAAS,cAAc,UAAU,EAAE,EAAE;AACjC,SAAO,IAAI,eAAe,YAAY,IAAI,IAAI,OAAO,QAAQ,QAAQ,CAAC,CAAC;;AAE3E,SAAQ,gBAAgB;;;;;;;CAOxB,SAAS,+BAA+B,KAAK;AACzC,MAAI,OAAO,QAAQ,UAAU;AACzB,QAAK,MAAM,qDAAqD,OAAO,MAAM;AAC7E,SAAM;;AAEV,SAAO;GACH,UAAU,SAAS;GACnB,WAAW;AACP,WAAO;;GAEd;;AAEL,SAAQ,iCAAiC;;;;;;ACjCzC,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,eAAe,QAAQ,mBAAmB,KAAK;;CAEvD,SAASC,mBAAiB,aAAa;AAOnC,SAAO,OAAO,IAAI,YAAY;;AAElC,SAAQ,mBAAmBA;CAC3B,IAAM,cAAN,MAAM,YAAY;;;;;;EAMd,YAAY,eAAe;GAEvB,MAAM,OAAO;AACb,QAAK,kBAAkB,gBAAgB,IAAI,IAAI,cAAc,mBAAG,IAAI,KAAK;AACzE,QAAK,YAAY,QAAQ,KAAK,gBAAgB,IAAI,IAAI;AACtD,QAAK,YAAY,KAAK,UAAU;IAC5B,MAAMC,YAAU,IAAI,YAAY,KAAK,gBAAgB;AACrD,cAAQ,gBAAgB,IAAI,KAAK,MAAM;AACvC,WAAOA;;AAEX,QAAK,eAAe,QAAQ;IACxB,MAAMA,YAAU,IAAI,YAAY,KAAK,gBAAgB;AACrD,cAAQ,gBAAgB,OAAO,IAAI;AACnC,WAAOA;;;;;AAKnB,SAAQ,eAAe,IAAI,aAAa;;;;;;ACrCxC,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,oBAAoB,KAAK;CACjC,MAAM,aAAa;EACf;GAAE,GAAG;GAAS,GAAG;GAAS;EAC1B;GAAE,GAAG;GAAQ,GAAG;GAAQ;EACxB;GAAE,GAAG;GAAQ,GAAG;GAAQ;EACxB;GAAE,GAAG;GAAS,GAAG;GAAS;EAC1B;GAAE,GAAG;GAAW,GAAG;GAAS;EAC/B;;;;;;CAMD,IAAM,oBAAN,MAAwB;EACpB,cAAc;GACV,SAAS,aAAa,UAAU;AAC5B,WAAO,SAAU,GAAG,MAAM;AACtB,SAAI,SAAS;MAGT,IAAI,UAAU,QAAQ;AACtB,UAAI,OAAO,YAAY,WAGnB,WAAU,QAAQ;AAGtB,UAAI,OAAO,YAAY,WACnB,QAAO,QAAQ,MAAM,SAAS,KAAK;;;;AAKnD,QAAK,IAAI,IAAI,GAAG,IAAI,WAAW,QAAQ,IACnC,MAAK,WAAW,GAAG,KAAK,aAAa,WAAW,GAAG,EAAE;;;AAIjE,SAAQ,oBAAoB;;;;;;ACvC5B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,kBAAkB,QAAQ,yCAAyC,QAAQ,+BAA+B,QAAQ,iCAAiC,QAAQ,8BAA8B,QAAQ,wBAAwB,QAAQ,sBAAsB,QAAQ,aAAa,QAAQ,oCAAoC,QAAQ,4BAA4B,QAAQ,8BAA8B,QAAQ,uBAAuB,QAAQ,sBAAsB,QAAQ,0BAA0B,QAAQ,oBAAoB,QAAQ,aAAa,QAAQ,YAAY,KAAK;;;;;CAKnjB,IAAM,YAAN,MAAgB;EACZ,cAAc;;;;EAId,gBAAgB,OAAO,UAAU;AAC7B,UAAO,QAAQ;;;;;EAKnB,cAAc,OAAO,UAAU;AAC3B,UAAO,QAAQ;;;;;EAKnB,oBAAoB,OAAO,UAAU;AACjC,UAAO,QAAQ;;;;;EAKnB,sBAAsB,OAAO,UAAU;AACnC,UAAO,QAAQ;;;;;EAKnB,wBAAwB,OAAO,UAAU;AACrC,UAAO,QAAQ;;;;;EAKnB,8BAA8B,OAAO,UAAU;AAC3C,UAAO,QAAQ;;;;;EAKnB,2BAA2B,WAAW,cAAc;;;;EAIpD,8BAA8B,WAAW;;AAE7C,SAAQ,YAAY;CACpB,IAAM,aAAN,MAAiB;AAEjB,SAAQ,aAAa;CACrB,IAAM,oBAAN,cAAgC,WAAW;EACvC,IAAI,QAAQ,aAAa;;AAE7B,SAAQ,oBAAoB;CAC5B,IAAM,0BAAN,cAAsC,WAAW;EAC7C,IAAI,QAAQ,aAAa;;AAE7B,SAAQ,0BAA0B;CAClC,IAAM,sBAAN,cAAkC,WAAW;EACzC,OAAO,QAAQ,aAAa;;AAEhC,SAAQ,sBAAsB;CAC9B,IAAM,uBAAN,MAA2B;EACvB,YAAY,WAAW;EACvB,eAAe,WAAW;;AAE9B,SAAQ,uBAAuB;CAC/B,IAAM,8BAAN,cAA0C,qBAAqB;AAE/D,SAAQ,8BAA8B;CACtC,IAAM,4BAAN,cAAwC,qBAAqB;AAE7D,SAAQ,4BAA4B;CACpC,IAAM,oCAAN,cAAgD,qBAAqB;AAErE,SAAQ,oCAAoC;AAC5C,SAAQ,aAAa,IAAI,WAAW;AAEpC,SAAQ,sBAAsB,IAAI,mBAAmB;AACrD,SAAQ,wBAAwB,IAAI,qBAAqB;AACzD,SAAQ,8BAA8B,IAAI,yBAAyB;AAEnE,SAAQ,iCAAiC,IAAI,6BAA6B;AAC1E,SAAQ,+BAA+B,IAAI,2BAA2B;AACtE,SAAQ,yCAAyC,IAAI,mCAAmC;;;;CAIxF,SAAS,kBAAkB;AACvB,SAAO,QAAQ;;AAEnB,SAAQ,kBAAkB;;;;;;AClG1B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,YAAY,KAAK;AAGzB,EAAC,SAAU,WAAW;AAClB,YAAU,UAAU,SAAS,KAAK;AAClC,YAAU,UAAU,YAAY,KAAK;IAC1B,QAAQ,cAAc,QAAQ,YAAY,EAAE,EAAE;;;;;;ACP7D,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,uBAAuB,QAAQ,uBAAuB,KAAK;AACnE,SAAQ,uBAAuB;EAC3B,IAAI,SAAS,KAAK;AACd,OAAI,WAAW,KACX;AAEJ,UAAO,QAAQ;;EAEnB,KAAK,SAAS;AACV,OAAI,WAAW,KACX,QAAO,EAAE;AAEb,UAAO,OAAO,KAAK,QAAQ;;EAElC;AACD,SAAQ,uBAAuB,EAC3B,IAAI,SAAS,KAAK,OAAO;AACrB,MAAI,WAAW,KACX;AAEJ,UAAQ,OAAO;IAEtB;;;;;;ACvBD,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,qBAAqB,KAAK;CAClC,MAAMC;CACN,IAAM,qBAAN,MAAyB;EACrB,SAAS;AACL,UAAOA,YAAU;;EAErB,KAAK,UAAU,IAAI,SAAS,GAAG,MAAM;AACjC,UAAO,GAAG,KAAK,SAAS,GAAG,KAAK;;EAEpC,KAAK,UAAU,QAAQ;AACnB,UAAO;;EAEX,SAAS;AACL,UAAO;;EAEX,UAAU;AACN,UAAO;;;AAGf,SAAQ,qBAAqB;;;;;;ACpB7B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,aAAa,KAAK;CAC1B,MAAM;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC,aAAW;CACjB,MAAM,uBAAuB,IAAI,qBAAqB,oBAAoB;;;;CAI1E,IAAM,aAAN,MAAM,WAAW;;EAEb,cAAc;;EAEd,OAAO,cAAc;AACjB,OAAI,CAAC,KAAK,UACN,MAAK,YAAY,IAAI,YAAY;AAErC,UAAO,KAAK;;;;;;;EAOhB,wBAAwB,gBAAgB;AACpC,WAAQ,GAAGF,iBAAe,gBAAgBE,YAAU,gBAAgBD,SAAO,QAAQ,UAAU,CAAC;;;;;EAKlG,SAAS;AACL,UAAO,KAAK,oBAAoB,CAAC,QAAQ;;;;;;;;;;EAU7C,KAAK,WAAS,IAAI,SAAS,GAAG,MAAM;AAChC,UAAO,KAAK,oBAAoB,CAAC,KAAKE,WAAS,IAAI,SAAS,GAAG,KAAK;;;;;;;;EAQxE,KAAK,WAAS,QAAQ;AAClB,UAAO,KAAK,oBAAoB,CAAC,KAAKA,WAAS,OAAO;;EAE1D,qBAAqB;AACjB,WAAQ,GAAGH,iBAAe,WAAWE,WAAS,IAAI;;;EAGtD,UAAU;AACN,QAAK,oBAAoB,CAAC,SAAS;AACnC,IAAC,GAAGF,iBAAe,kBAAkBE,YAAUD,SAAO,QAAQ,UAAU,CAAC;;;AAGjF,SAAQ,aAAa;;;;;;AC9ErB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,aAAa,KAAK;AAiB1B,EAAC,SAAU,YAAY;;AAEnB,aAAW,WAAW,UAAU,KAAK;;AAErC,aAAW,WAAW,aAAa,KAAK;IAC5B,QAAQ,eAAe,QAAQ,aAAa,EAAE,EAAE;;;;;;ACRhE,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,uBAAuB,QAAQ,kBAAkB,QAAQ,iBAAiB,KAAK;CACvF,MAAMG;AACN,SAAQ,iBAAiB;AACzB,SAAQ,kBAAkB;AAC1B,SAAQ,uBAAuB;EAC3B,SAAS,QAAQ;EACjB,QAAQ,QAAQ;EAChB,YAAYA,gBAAc,WAAW;EACxC;;;;;;ACTD,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,mBAAmB,KAAK;CAChC,MAAMC;;;;;;CAMN,IAAM,mBAAN,MAAuB;EACnB,YAAY,eAAeA,2BAAyB,sBAAsB;AACtE,QAAK,eAAe;;EAGxB,cAAc;AACV,UAAO,KAAK;;EAGhB,aAAa,MAAM,QAAQ;AACvB,UAAO;;EAGX,cAAc,aAAa;AACvB,UAAO;;EAGX,SAAS,OAAO,aAAa;AACzB,UAAO;;EAGX,UAAU,SAAS;AACf,UAAO;;EAGX,WAAW,OAAO;AACd,UAAO;;EAGX,IAAI,UAAU;EAEd,cAAc;AACV,UAAO;;EAGX,gBAAgB,YAAY,OAAO;;AAEvC,SAAQ,mBAAmB;;;;;;AC7C3B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,iBAAiB,QAAQ,iBAAiB,QAAQ,aAAa,QAAQ,UAAU,QAAQ,gBAAgB,QAAQ,UAAU,KAAK;CACxI,MAAMC;CACN,MAAMC;CACN,MAAM;;;;CAIN,MAAM,YAAY,GAAGD,YAAU,kBAAkB,iCAAiC;;;;;;CAMlF,SAAS,QAAQ,WAAS;AACtB,SAAOE,UAAQ,SAAS,SAAS,IAAI;;AAEzC,SAAQ,UAAU;;;;CAIlB,SAAS,gBAAgB;AACrB,SAAO,QAAQ,UAAU,WAAW,aAAa,CAAC,QAAQ,CAAC;;AAE/D,SAAQ,gBAAgB;;;;;;;CAOxB,SAAS,QAAQ,WAAS,MAAM;AAC5B,SAAOA,UAAQ,SAAS,UAAU,KAAK;;AAE3C,SAAQ,UAAU;;;;;;CAMlB,SAAS,WAAW,WAAS;AACzB,SAAOA,UAAQ,YAAY,SAAS;;AAExC,SAAQ,aAAa;;;;;;;;CAQrB,SAAS,eAAe,WAAS,aAAa;AAC1C,SAAO,QAAQA,WAAS,IAAID,qBAAmB,iBAAiB,YAAY,CAAC;;AAEjF,SAAQ,iBAAiB;;;;;;CAMzB,SAAS,eAAe,WAAS;EAC7B,IAAI;AACJ,UAAQ,KAAK,QAAQC,UAAQ,MAAM,QAAQ,OAAO,KAAK,IAAI,KAAK,IAAI,GAAG,aAAa;;AAExF,SAAQ,iBAAiB;;;;;;AC/EzB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,kBAAkB,QAAQ,qBAAqB,QAAQ,gBAAgB,QAAQ,iBAAiB,KAAK;CAgB7G,MAAMC;CACN,MAAMC;CACN,MAAM,sBAAsB;CAC5B,MAAM,qBAAqB;CAC3B,SAAS,eAAe,SAAS;AAC7B,SAAO,oBAAoB,KAAK,QAAQ,IAAI,YAAYD,2BAAyB;;AAErF,SAAQ,iBAAiB;CACzB,SAAS,cAAc,QAAQ;AAC3B,SAAO,mBAAmB,KAAK,OAAO,IAAI,WAAWA,2BAAyB;;AAElF,SAAQ,gBAAgB;;;;;CAKxB,SAAS,mBAAmB,aAAa;AACrC,SAAQ,eAAe,YAAY,QAAQ,IAAI,cAAc,YAAY,OAAO;;AAEpF,SAAQ,qBAAqB;;;;;;;CAO7B,SAAS,gBAAgB,aAAa;AAClC,SAAO,IAAIC,qBAAmB,iBAAiB,YAAY;;AAE/D,SAAQ,kBAAkB;;;;;;AC/B1B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,aAAa,KAAK;CAC1B,MAAMC;CACN,MAAMC;CACN,MAAM;CACN,MAAMC;CACN,MAAM,aAAaF,YAAU,WAAW,aAAa;;;;CAIrD,IAAM,aAAN,MAAiB;EAEb,UAAU,MAAM,SAAS,YAAU,WAAW,QAAQ,EAAE;AAEpD,OADa,QAAQ,YAAY,QAAQ,YAAY,KAAK,IAAI,KAAK,IAAI,QAAQ,KAAK,CAEhF,QAAO,IAAI,mBAAmB,kBAAkB;GAEpD,MAAM,oBAAoBG,cAAY,GAAGF,kBAAgB,gBAAgBE,UAAQ;AACjF,OAAI,cAAc,kBAAkB,KAC/B,GAAGD,sBAAoB,oBAAoB,kBAAkB,CAC9D,QAAO,IAAI,mBAAmB,iBAAiB,kBAAkB;OAGjE,QAAO,IAAI,mBAAmB,kBAAkB;;EAGxD,gBAAgB,MAAM,MAAM,MAAM,MAAM;GACpC,IAAI;GACJ,IAAI;GACJ,IAAI;AACJ,OAAI,UAAU,SAAS,EACnB;YAEK,UAAU,WAAW,EAC1B,MAAK;YAEA,UAAU,WAAW,GAAG;AAC7B,WAAO;AACP,SAAK;UAEJ;AACD,WAAO;AACP,UAAM;AACN,SAAK;;GAET,MAAM,gBAAgB,QAAQ,QAAQ,QAAQ,KAAK,IAAI,MAAM,WAAW,QAAQ;GAChF,MAAM,OAAO,KAAK,UAAU,MAAM,MAAM,cAAc;GACtD,MAAM,sBAAsB,GAAGD,kBAAgB,SAAS,eAAe,KAAK;AAC5E,UAAO,WAAW,KAAK,oBAAoB,IAAI,QAAW,KAAK;;;AAGvE,SAAQ,aAAa;CACrB,SAAS,cAAc,aAAa;AAChC,SAAQ,OAAO,gBAAgB,YAC3B,OAAO,YAAY,cAAc,YACjC,OAAO,YAAY,eAAe,YAClC,OAAO,YAAY,kBAAkB;;;;;;;ACxD7C,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,cAAc,KAAK;CAE3B,MAAM,cAAc,2BAAiB,YAAY;;;;CAIjD,IAAM,cAAN,MAAkB;EACd,YAAY,WAAW,MAAM,WAAS,SAAS;AAC3C,QAAK,YAAY;AACjB,QAAK,OAAO;AACZ,QAAK,UAAUG;AACf,QAAK,UAAU;;EAEnB,UAAU,MAAM,SAAS,WAAS;AAC9B,UAAO,KAAK,YAAY,CAAC,UAAU,MAAM,SAASC,UAAQ;;EAE9D,gBAAgB,OAAO,UAAU,UAAU,KAAK;GAC5C,MAAM,SAAS,KAAK,YAAY;AAChC,UAAO,QAAQ,MAAM,OAAO,iBAAiB,QAAQ,UAAU;;;;;;EAMnE,aAAa;AACT,OAAI,KAAK,UACL,QAAO,KAAK;GAEhB,MAAM,SAAS,KAAK,UAAU,kBAAkB,KAAK,MAAM,KAAK,SAAS,KAAK,QAAQ;AACtF,OAAI,CAAC,OACD,QAAO;AAEX,QAAK,YAAY;AACjB,UAAO,KAAK;;;AAGpB,SAAQ,cAAc;;;;;;ACrCtB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,qBAAqB,KAAK;CAClC,MAAM;;;;;;;CAON,IAAM,qBAAN,MAAyB;EACrB,UAAU,OAAO,UAAU,UAAU;AACjC,UAAO,IAAI,aAAa,YAAY;;;AAG5C,SAAQ,qBAAqB;;;;;;ACd7B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,sBAAsB,KAAK;CACnC,MAAMC;CAEN,MAAM,uBAAuB,mCAAyB,oBAAoB;;;;;;;;;CAS1E,IAAM,sBAAN,MAA0B;;;;EAItB,UAAU,MAAM,WAAS,SAAS;GAC9B,IAAI;AACJ,WAAS,KAAK,KAAK,kBAAkB,MAAMC,WAAS,QAAQ,MAAM,QAAQ,OAAO,KAAK,IAAI,KAAK,IAAID,gBAAc,YAAY,MAAM,MAAMC,WAAS,QAAQ;;EAE9J,cAAc;GACV,IAAI;AACJ,WAAQ,KAAK,KAAK,eAAe,QAAQ,OAAO,KAAK,IAAI,KAAK;;;;;EAKlE,YAAY,UAAU;AAClB,QAAK,YAAY;;EAErB,kBAAkB,MAAM,WAAS,SAAS;GACtC,IAAI;AACJ,WAAQ,KAAK,KAAK,eAAe,QAAQ,OAAO,KAAK,IAAI,KAAK,IAAI,GAAG,UAAU,MAAMA,WAAS,QAAQ;;;AAG9G,SAAQ,sBAAsB;;;;;;ACpC9B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,mBAAmB,KAAK;AAOhC,EAAC,SAAU,kBAAkB;;;;;AAKzB,mBAAiB,iBAAiB,gBAAgB,KAAK;;;;;AAKvD,mBAAiB,iBAAiB,YAAY,KAAK;;;;;AAKnD,mBAAiB,iBAAiB,wBAAwB,KAAK;IAC7C,QAAQ,qBAAqB,QAAQ,mBAAmB,EAAE,EAAE;;;;;;ACvClF,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,WAAW,KAAK;AAiBxB,EAAC,SAAU,aAAU;;AAEjB,cAAS,YAAS,cAAc,KAAK;;;;;AAKrC,cAAS,YAAS,YAAY,KAAK;;;;;AAKnC,cAAS,YAAS,YAAY,KAAK;;;;;;AAMnC,cAAS,YAAS,cAAc,KAAK;;;;;;AAMrC,cAAS,YAAS,cAAc,KAAK;IAC3B,QAAQ,aAAa,QAAQ,WAAW,EAAE,EAAE;;;;;;AC3C1D,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,iBAAiB,KAAK;AAK9B,EAAC,SAAU,mBAAgB;;;;AAIvB,oBAAe,kBAAe,WAAW,KAAK;;;;;AAK9C,oBAAe,kBAAe,QAAQ,KAAK;;;;AAI3C,oBAAe,kBAAe,WAAW,KAAK;IAC9B,QAAQ,mBAAmB,QAAQ,iBAAiB,EAAE,EAAE;;;;;;ACL5E,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,gBAAgB,QAAQ,cAAc,KAAK;CACnD,MAAMC,yBAAuB;CAC7B,MAAMC,cAAY,QAAQD,uBAAqB;CAC/C,MAAME,qBAAmB,WAAWF,uBAAqB,eAAeA,uBAAqB;CAC7F,MAAMG,oCAAkB,IAAI,OAAO,OAAOF,YAAU,GAAGC,mBAAiB,IAAI;CAC5E,MAAME,2BAAyB;CAC/B,MAAMC,oCAAkC;;;;;;;;;CASxC,SAASC,cAAY,KAAK;AACtB,SAAOH,kBAAgB,KAAK,IAAI;;AAEpC,SAAQ,cAAcG;;;;;CAKtB,SAASC,gBAAc,OAAO;AAC1B,SAAQH,yBAAuB,KAAK,MAAM,IACtC,CAACC,kCAAgC,KAAK,MAAM;;AAEpD,SAAQ,gBAAgBE;;;;;;AC5BxB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,iBAAiB,KAAK;CAC9B,MAAM;CACN,MAAMC,0BAAwB;CAC9B,MAAMC,wBAAsB;CAC5B,MAAMC,2BAAyB;CAC/B,MAAMC,mCAAiC;;;;;;;;;;CAUvC,IAAM,iBAAN,MAAM,eAAe;EACjB,YAAY,eAAe;AACvB,QAAK,iCAAiB,IAAI,KAAK;AAC/B,OAAI,cACA,MAAK,OAAO,cAAc;;EAElC,IAAI,KAAK,OAAO;GAGZ,MAAM,aAAa,KAAK,QAAQ;AAChC,OAAI,WAAW,eAAe,IAAI,IAAI,CAClC,YAAW,eAAe,OAAO,IAAI;AAEzC,cAAW,eAAe,IAAI,KAAK,MAAM;AACzC,UAAO;;EAEX,MAAM,KAAK;GACP,MAAM,aAAa,KAAK,QAAQ;AAChC,cAAW,eAAe,OAAO,IAAI;AACrC,UAAO;;EAEX,IAAI,KAAK;AACL,UAAO,KAAK,eAAe,IAAI,IAAI;;EAEvC,YAAY;AACR,UAAO,KAAK,OAAO,CACd,QAAQ,KAAK,QAAQ;AACtB,QAAI,KAAK,MAAMA,mCAAiC,KAAK,IAAI,IAAI,CAAC;AAC9D,WAAO;MACR,EAAE,CAAC,CACD,KAAKD,yBAAuB;;EAErC,OAAO,eAAe;AAClB,OAAI,cAAc,SAASD,sBACvB;AACJ,QAAK,iBAAiB,cACjB,MAAMC,yBAAuB,CAC7B,SAAS,CACT,QAAQ,KAAK,SAAS;IACvB,MAAM,aAAa,KAAK,MAAM;IAC9B,MAAM,IAAI,WAAW,QAAQC,iCAA+B;AAC5D,QAAI,MAAM,IAAI;KACV,MAAM,MAAM,WAAW,MAAM,GAAG,EAAE;KAClC,MAAM,QAAQ,WAAW,MAAM,IAAI,GAAG,KAAK,OAAO;AAClD,UAAK,GAAG,wBAAwB,aAAa,IAAI,KAAK,GAAG,wBAAwB,eAAe,MAAM,CAClG,KAAI,IAAI,KAAK,MAAM;;AAM3B,WAAO;sBACR,IAAI,KAAK,CAAC;AAEb,OAAI,KAAK,eAAe,OAAOH,wBAC3B,MAAK,iBAAiB,IAAI,IAAI,MAAM,KAAK,KAAK,eAAe,SAAS,CAAC,CAClE,SAAS,CACT,MAAM,GAAGA,wBAAsB,CAAC;;EAG7C,QAAQ;AACJ,UAAO,MAAM,KAAK,KAAK,eAAe,MAAM,CAAC,CAAC,SAAS;;EAE3D,SAAS;GACL,MAAM,aAAa,IAAI,gBAAgB;AACvC,cAAW,iBAAiB,IAAI,IAAI,KAAK,eAAe;AACxD,UAAO;;;AAGf,SAAQ,iBAAiB;;;;;;ACrFzB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,mBAAmB,KAAK;CAChC,MAAM;CACN,SAAS,iBAAiB,eAAe;AACrC,SAAO,IAAI,kBAAkB,eAAe,cAAc;;AAE9D,SAAQ,mBAAmB;;;;;;ACN3B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,UAAU,KAAK;CAGvB,MAAMI;;AAEN,SAAQ,UAAUA,YAAU,WAAW,aAAa;;;;;;ACNpD,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,OAAO,KAAK;CAGpB,MAAMC;;;;;;;AAON,SAAQ,OAAOA,SAAO,QAAQ,UAAU;;;;;;ACXxC,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,sBAAsB,QAAQ,oBAAoB,KAAK;CAC/D,MAAMC;;;;;CAKN,IAAM,oBAAN,MAAwB;EACpB,SAAS,OAAO,UAAU,UAAU;AAChC,UAAOA,cAAY;;;AAG3B,SAAQ,oBAAoB;AAC5B,SAAQ,sBAAsB,IAAI,mBAAmB;;;;;;ACbrD,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,aAAa,KAAK;CAC1B,MAAM;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC,aAAW;;;;CAIjB,IAAM,aAAN,MAAM,WAAW;;EAEb,cAAc;;EAEd,OAAO,cAAc;AACjB,OAAI,CAAC,KAAK,UACN,MAAK,YAAY,IAAI,YAAY;AAErC,UAAO,KAAK;;;;;;EAMhB,uBAAuB,UAAU;AAC7B,WAAQ,GAAGF,iBAAe,gBAAgBE,YAAU,UAAUD,SAAO,QAAQ,UAAU,CAAC;;;;;EAK5F,mBAAmB;AACf,WAAQ,GAAGD,iBAAe,WAAWE,WAAS,IAAI,oBAAoB;;;;;EAK1E,SAAS,MAAM,WAAS,SAAS;AAC7B,UAAO,KAAK,kBAAkB,CAAC,SAAS,MAAMC,WAAS,QAAQ;;;EAGnE,UAAU;AACN,IAAC,GAAGH,iBAAe,kBAAkBE,YAAUD,SAAO,QAAQ,UAAU,CAAC;;;AAGjF,SAAQ,aAAa;;;;;;AC3CrB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,UAAU,KAAK;CAGvB,MAAM;;AAEN,SAAQ,UAAU,UAAU,WAAW,aAAa;;;;;;ACNpD,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,wBAAwB,KAAK;;;;CAIrC,IAAM,wBAAN,MAA4B;;EAExB,OAAO,UAAU,UAAU;;EAE3B,QAAQ,WAAS,UAAU;AACvB,UAAOG;;EAEX,SAAS;AACL,UAAO,EAAE;;;AAGjB,SAAQ,wBAAwB;;;;;;AChBhC,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,gBAAgB,QAAQ,aAAa,QAAQ,mBAAmB,QAAQ,aAAa,KAAK;CAClG,MAAMC;;;;CAKN,MAAM,eAAe,uBAAa,kBAAkB,4BAA4B;;;;;;;CAOhF,SAAS,WAAW,WAAS;AACzB,SAAOC,UAAQ,SAAS,YAAY,IAAI;;AAE5C,SAAQ,aAAa;;;;;;CAMrB,SAAS,mBAAmB;AACxB,SAAO,WAAWD,YAAU,WAAW,aAAa,CAAC,QAAQ,CAAC;;AAElE,SAAQ,mBAAmB;;;;;;;CAO3B,SAAS,WAAW,WAAS,SAAS;AAClC,SAAOC,UAAQ,SAAS,aAAa,QAAQ;;AAEjD,SAAQ,aAAa;;;;;;CAMrB,SAAS,cAAc,WAAS;AAC5B,SAAOA,UAAQ,YAAY,YAAY;;AAE3C,SAAQ,gBAAgB;;;;;;AC7CxB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,iBAAiB,KAAK;CAC9B,MAAMC;CACN,MAAM;CACN,MAAMC;CACN,MAAM;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC,aAAW;CACjB,MAAM,2BAA2B,IAAI,wBAAwB,uBAAuB;;;;CAIpF,IAAM,iBAAN,MAAM,eAAe;;EAEjB,cAAc;AACV,QAAK,gBAAgBF,UAAQ;AAC7B,QAAK,aAAa,kBAAkB;AACpC,QAAK,mBAAmB,kBAAkB;AAC1C,QAAK,aAAa,kBAAkB;AACpC,QAAK,gBAAgB,kBAAkB;;;EAG3C,OAAO,cAAc;AACjB,OAAI,CAAC,KAAK,UACN,MAAK,YAAY,IAAI,gBAAgB;AAEzC,UAAO,KAAK;;;;;;;EAOhB,oBAAoB,YAAY;AAC5B,WAAQ,GAAGF,iBAAe,gBAAgBI,YAAU,YAAYD,SAAO,QAAQ,UAAU,CAAC;;;;;;;;;EAS9F,OAAO,WAAS,SAAS,SAASF,sBAAoB,sBAAsB;AACxE,UAAO,KAAK,sBAAsB,CAAC,OAAOI,WAAS,SAAS,OAAO;;;;;;;;;EASvE,QAAQ,WAAS,SAAS,SAASJ,sBAAoB,sBAAsB;AACzE,UAAO,KAAK,sBAAsB,CAAC,QAAQI,WAAS,SAAS,OAAO;;;;;EAKxE,SAAS;AACL,UAAO,KAAK,sBAAsB,CAAC,QAAQ;;;EAG/C,UAAU;AACN,IAAC,GAAGL,iBAAe,kBAAkBI,YAAUD,SAAO,QAAQ,UAAU,CAAC;;EAE7E,uBAAuB;AACnB,WAAQ,GAAGH,iBAAe,WAAWI,WAAS,IAAI;;;AAG1D,SAAQ,iBAAiB;;;;;;ACvEzB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,cAAc,KAAK;CAG3B,MAAM;;AAEN,SAAQ,cAAc,cAAc,eAAe,aAAa;;;;;;ACNhE,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,WAAW,KAAK;CACxB,MAAM;CACN,MAAME;CACN,MAAMC;CACN,MAAM;CACN,MAAM;CACN,MAAM,WAAW;;;;CAIjB,IAAM,WAAN,MAAM,SAAS;;EAEX,cAAc;AACV,QAAK,uBAAuB,IAAID,wBAAsB,qBAAqB;AAC3E,QAAK,kBAAkBC,sBAAoB;AAC3C,QAAK,qBAAqBA,sBAAoB;AAC9C,QAAK,aAAa,gBAAgB;AAClC,QAAK,UAAU,gBAAgB;AAC/B,QAAK,gBAAgB,gBAAgB;AACrC,QAAK,iBAAiB,gBAAgB;AACtC,QAAK,UAAU,gBAAgB;AAC/B,QAAK,iBAAiB,gBAAgB;;;EAG1C,OAAO,cAAc;AACjB,OAAI,CAAC,KAAK,UACN,MAAK,YAAY,IAAI,UAAU;AAEnC,UAAO,KAAK;;;;;;;EAOhB,wBAAwB,UAAU;GAC9B,MAAM,WAAW,GAAG,eAAe,gBAAgB,UAAU,KAAK,sBAAsB,OAAO,QAAQ,UAAU,CAAC;AAClH,OAAI,QACA,MAAK,qBAAqB,YAAY,SAAS;AAEnD,UAAO;;;;;EAKX,oBAAoB;AAChB,WAAQ,GAAG,eAAe,WAAW,SAAS,IAAI,KAAK;;;;;EAK3D,UAAU,MAAM,WAAS;AACrB,UAAO,KAAK,mBAAmB,CAAC,UAAU,MAAMC,UAAQ;;;EAG5D,UAAU;AACN,IAAC,GAAG,eAAe,kBAAkB,UAAU,OAAO,QAAQ,UAAU,CAAC;AACzE,QAAK,uBAAuB,IAAIF,wBAAsB,qBAAqB;;;AAGnF,SAAQ,WAAW;;;;;;AC7DnB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,QAAQ,KAAK;CAGrB,MAAM;;AAEN,SAAQ,QAAQ,QAAQ,SAAS,aAAa;;;;;;ACN9C,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,QAAQ,QAAQ,cAAc,QAAQ,UAAU,QAAQ,OAAO,QAAQ,UAAU,QAAQ,uBAAuB,QAAQ,kBAAkB,QAAQ,iBAAiB,QAAQ,gBAAgB,QAAQ,iBAAiB,QAAQ,qBAAqB,QAAQ,mBAAmB,QAAQ,aAAa,QAAQ,iBAAiB,QAAQ,WAAW,QAAQ,mBAAmB,QAAQ,sBAAsB,QAAQ,cAAc,QAAQ,uBAAuB,QAAQ,uBAAuB,QAAQ,YAAY,QAAQ,kBAAkB,QAAQ,eAAe,QAAQ,oBAAoB,QAAQ,eAAe,QAAQ,mBAAmB,QAAQ,iCAAiC,KAAK;CACnqB,IAAIG;AACJ,QAAO,eAAe,SAAS,kCAAkC;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,UAAQ;;EAAmC,CAAC;CAE3J,IAAI;AACJ,QAAO,eAAe,SAAS,oBAAoB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,UAAU;;EAAqB,CAAC;AACjI,QAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,UAAU;;EAAiB,CAAC;CAEzH,IAAI;AACJ,QAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,gBAAgB;;EAAsB,CAAC;CACzI,IAAIC;AACJ,QAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,UAAQ;;EAAiB,CAAC;CAEvH,IAAI;AACJ,QAAO,eAAe,SAAS,mBAAmB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,YAAY;;EAAoB,CAAC;CACjI,IAAI;AACJ,QAAO,eAAe,SAAS,aAAa;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,SAAS;;EAAc,CAAC;CAElH,IAAI;AACJ,QAAO,eAAe,SAAS,wBAAwB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,oBAAoB;;EAAyB,CAAC;AACnJ,QAAO,eAAe,SAAS,wBAAwB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,oBAAoB;;EAAyB,CAAC;CACnJ,IAAI;AACJ,QAAO,eAAe,SAAS,eAAe;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,cAAc;;EAAgB,CAAC;CAC3H,IAAI;AACJ,QAAO,eAAe,SAAS,uBAAuB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,sBAAsB;;EAAwB,CAAC;CACnJ,IAAI;AACJ,QAAO,eAAe,SAAS,oBAAoB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,iBAAiB;;EAAqB,CAAC;CACxI,IAAI;AACJ,QAAO,eAAe,SAAS,YAAY;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,YAAY;;EAAa,CAAC;CACnH,IAAI;AACJ,QAAO,eAAe,SAAS,kBAAkB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,SAAS;;EAAmB,CAAC;CAC5H,IAAI;AACJ,QAAO,eAAe,SAAS,cAAc;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,cAAc;;EAAe,CAAC;CACzH,IAAI;AACJ,QAAO,eAAe,SAAS,oBAAoB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,QAAQ;;EAAqB,CAAC;CAC/H,IAAI;AACJ,QAAO,eAAe,SAAS,sBAAsB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,oBAAoB;;EAAuB,CAAC;AAC/I,QAAO,eAAe,SAAS,kBAAkB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,oBAAoB;;EAAmB,CAAC;AACvI,QAAO,eAAe,SAAS,iBAAiB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,oBAAoB;;EAAkB,CAAC;CACrI,IAAI;AACJ,QAAO,eAAe,SAAS,kBAAkB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,yBAAyB;;EAAmB,CAAC;AAC5I,QAAO,eAAe,SAAS,mBAAmB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,yBAAyB;;EAAoB,CAAC;AAC9I,QAAO,eAAe,SAAS,wBAAwB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,yBAAyB;;EAAyB,CAAC;CAGxJ,MAAM;AACN,QAAO,eAAe,SAAS,WAAW;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,cAAc;;EAAY,CAAC;CACnH,MAAM;AACN,QAAO,eAAe,SAAS,QAAQ;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,WAAW;;EAAS,CAAC;CAC1G,MAAM;AACN,QAAO,eAAe,SAAS,WAAW;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,cAAc;;EAAY,CAAC;CACnH,MAAM;AACN,QAAO,eAAe,SAAS,eAAe;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,kBAAkB;;EAAgB,CAAC;CAC/H,MAAM;AACN,QAAO,eAAe,SAAS,SAAS;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,YAAY;;EAAU,CAAC;AAE7G,SAAQ,UAAU;EACd,SAAS,cAAc;EACvB,MAAM,WAAW;EACjB,SAAS,cAAc;EACvB,aAAa,kBAAkB;EAC/B,OAAO,YAAY;EACtB;;;;;;;AC5ED;;AAEE;;;;;;;;;;;;;;;;;;AAkBA;;AAEA;AACA;;AAEC;AACA;;AAEA;;AAED;;;;;;AAMA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEC;;AAED;;;;AAIA;AACA;AACA;AACA;;;;AAIA;;AAEC;;AAEE;AACA;;AAEA;AACA;;;AAGA;;AAEA;;;AAGH;;;AAGA;AACA;;AAEA;AACA;;;;;;AAMF;;;;;ACxFA,IAAI,iBAAiB,cAAcK,8BAAY;CAC9C,cAAc;AACb,QAAM,6BAA6B,CAAC;GACnC,IAAI;GACJ,MAAM;GACN,MAAM;GACN,GAAG;GACH,GAAG;GACH,EAAE;GACF,IAAI;GACJ,MAAM;GACN,MAAM;GACN,GAAG;GACH,CAAC,CAAC;;;;;CAKJ,MAAM;EACL,MAAM,MAAM,KAAK,QAAQ;EACzB,MAAM,KAAK,KAAK,KAAK;AACrB,MAAI,UAAUC,yBAAO,KAAK,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,UAAU;AAC1D,MAAI,QAAQ,KAAK,MAAM;AACvB,SAAO;;;;;CAKR,OAAO,SAAS;AACf,SAAO,IAAI,KAAKA,yBAAO,KAAK,QAAQ,QAAQ,CAAC,UAAU,GAAG,MAAM,KAAK,KAAK,QAAQ,QAAQ,IAAI,CAAC;;;;;CAKhG,SAAS,MAAM;EACd,MAAM,MAAM,KAAK,QAAQ;EACzB,MAAM,KAAK,KAAK,SAAS;AACzB,MAAI,UAAUA,yBAAO,KAAK,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,UAAU;AAC1D,MAAI,SAAS,KAAK,OAAO,KAAK,KAAK,KAAK,QAAQ,IAAI,MAAM,MAAM;AAChE,SAAO;;;;;;CAMR,kBAAkB,SAAS,SAAS;EACnC,IAAI,KAAKA,yBAAO,KAAK,QAAQ,QAAQ,CAAC,UAAU,GAAG;AACnD,MAAI,KAAK,KAAK,MAAM,uBAAuB,IAAI,KAAK,KAAK,MAAM,uBAAuB,CAAE,OAAM,IAAI,MAAM,2GAA2G;AACnN,MAAI,QAAQ,QAAQ,EAAG,OAAM,IAAI,MAAM,0EAA0E;EACjH,IAAI,IAAI;AACR,MAAI,QAAQ,QAAQ,GAAG;GACtB,IAAI,YAAY,QAAQ,QAAQ,KAAK,UAAU,CAAC,UAAU,EAAE;AAC5D,OAAI,SAAS,UAAU,EAAE,KAAK,SAAU,KAAI,MAAM,SAAS,UAAU,GAAG,EAAE,GAAG;YACpE,SAAS,UAAU,EAAE,KAAK,MAAO,KAAI,MAAM,SAAS,UAAU,GAAG,EAAE,GAAG;OAC1E,KAAI,MAAM,WAAW;;AAE3B,SAAO,IAAI,KAAK,GAAG,CAAC,aAAa,CAAC,QAAQ,SAAS,EAAE;;;;;;CAMtD,iBAAiB,MAAM,SAAS,QAAQ;AACvC,MAAI,OAAO,SAAS,SAAU,OAAM,IAAI,MAAM,gFAAyD,KAAK,GAAG,IAAI;EACnH,IAAI,UAAU,KAAK,MAAM,uHAAuH;AAChJ,MAAI,CAAC,QAAS,OAAM,IAAI,MAAM,uDAAuD;EACrF,IAAI,KAAK,KAAK,MAAM,QAAQ,KAAK,MAAM,QAAQ,KAAK,MAAM,QAAQ,KAAK,MAAM,QAAQ,KAAK,MAAM,QAAQ,KAAK,MAAM,QAAQ,MAAM,QAAQ,KAAK,QAAQ,KAAK,KAAK;AAChK,MAAI,OAAO,MAAM,GAAG,CAAE,OAAM,IAAI,MAAM,sDAAsD;AAC5F,MAAI,KAAK,KAAK,MAAM,uBAAuB,IAAI,KAAK,KAAK,MAAM,uBAAuB,CAAE,OAAM,IAAI,WAAW,MAAM,4GAA4G;AAC/N,MAAI,CAAC,OAAQ,UAAS,KAAK,QAAQ;AACnC,SAAO,UAAUA,yBAAO,KAAK,KAAK,IAAI,CAAC,UAAU;AACjD,SAAO,QAAQ;AACf,MAAI,QAAQ,GAAI,QAAO,QAAQ,SAAS,MAAM,QAAQ,KAAK,IAAI,OAAO,IAAI,QAAQ,GAAG,OAAO,CAAC,GAAG;AAChG,SAAO;;CAER,OAAO,OAAO;EACb,MAAM,UAAU,WAAW,OAAO,OAAO,KAAK,iBAAiB;AAC/D,UAAQ,UAAU;AAClB,UAAQ,QAAQ;AAChB,MAAI,UAAU,KAAK,EAAG,+CAAuB,MAAM,SAAS,MAAM;AAClE,SAAO;;CAER,mBAAmB,QAAQ,QAAQ,SAAS,QAAQ;EACnD,IAAI,UAAU,UAAU,KAAK,QAAQ,EAAE,MAAM,OAAO,MAAM;AAC1D,SAAO,OAAO,MAAM,KAAK;GACxB,IAAI,CAAC,SAAS,YAAY,OAAO,KAAK;AACtC,WAAQ,SAAR;IACC,KAAK;AACJ,aAAQ,UAAU,OAAO,OAAO,CAAC,UAAU;AAC3C;IACD,KAAK;AACJ,aAAQ,QAAQ,OAAO,OAAO;AAC9B;IACD;KACC,IAAI,IAAI,QAAQ;AAChB,SAAI,MAAM,QAAS,OAAM,IAAI,WAAW,MAAM,iBAAiB,QAAQ,cAAc,SAAS,QAAQ,KAAK,WAAW;KACtH,IAAI,IAAI,OAAO,KAAK,SAAS;AAC7B,SAAI,MAAM,MAAO,EAAC,MAAM,OAAOC,sCAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,EAAE;;;AAG/G,SAAO;;CAER,oBAAoB,SAAS,QAAQ,SAAS;AAC7C,MAAI,QAAQ,YAAY,GAAI,QAAO,IAAI,GAAGC,2BAAS,OAAO,CAAC,MAAM,QAAQ,QAAQ;AACjF,MAAI,QAAQ,UAAU,EAAG,QAAO,IAAI,GAAGA,2BAAS,OAAO,CAAC,MAAM,QAAQ,MAAM;EAC5E,IAAI,IAAI,QAAQ;AAChB,MAAI,MAAM,MAAO,EAAC,KAAK,OAAOD,sCAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,OAAO;AAC9F,SAAO;;;;;;AAMT,MAAM,YAAY,IAAI,gBAAgB;;;;;;;;;;;AC3GtC,IAAI,iBAAiC,yBAAS,kBAAkB;;;;AAI/D,kBAAiB,iBAAiB,iBAAiB,KAAK;;;;AAIxD,kBAAiB,iBAAiB,YAAY,KAAK;;;;AAInD,kBAAiB,iBAAiB,YAAY,KAAK;;;;AAInD,kBAAiB,iBAAiB,aAAa,KAAK;;;;AAIpD,kBAAiB,iBAAiB,UAAU,KAAK;;;;AAIjD,kBAAiB,iBAAiB,eAAe,KAAK;;;;AAItD,kBAAiB,iBAAiB,YAAY,KAAK;;;;AAInD,kBAAiB,iBAAiB,kBAAkB,KAAK;;;;AAIzD,kBAAiB,iBAAiB,oBAAoB,KAAK;;;;AAI3D,kBAAiB,iBAAiB,cAAc,KAAK;AACrD,QAAO;EACN,EAAE,CAAC;;;;;;AAML,IAAI,eAA+B,yBAAS,gBAAgB;;;;AAI3D,gBAAe,eAAe,iBAAiB,KAAK;;;;AAIpD,gBAAe,eAAe,YAAY,KAAK;AAC/C,QAAO;EACN,EAAE,CAAC;;;;;;;AAOL,IAAI,cAA8B,yBAAS,eAAe;;;;AAIzD,eAAc,cAAc,iBAAiB,KAAK;;;;AAIlD,eAAc,cAAc,UAAU,KAAK;;;;AAI3C,eAAc,cAAc,UAAU,KAAK;;;;AAI3C,eAAc,cAAc,SAAS,KAAK;;;;AAI1C,eAAc,cAAc,gBAAgB,KAAK;;;;AAIjD,eAAc,cAAc,SAAS,KAAK;;;;AAI1C,eAAc,cAAc,UAAU,KAAK;;;;AAI3C,eAAc,cAAc,cAAc,KAAK;;;;AAI/C,eAAc,cAAc,SAAS,KAAK;;;;AAI1C,eAAc,cAAc,SAAS,KAAK;;;;AAI1C,eAAc,cAAc,aAAa,MAAM;;;;AAI/C,eAAc,cAAc,gBAAgB,MAAM;;;;AAIlD,eAAc,cAAc,eAAe,MAAM;;;;AAIjD,eAAc,cAAc,oBAAoB,MAAM;;;;AAItD,eAAc,cAAc,SAAS,MAAM;;;;AAI3C,eAAc,cAAc,WAAW,MAAM;;;;AAI7C,eAAc,cAAc,WAAW,MAAM;;;;AAI7C,eAAc,cAAc,UAAU,MAAM;;;;AAI5C,eAAc,cAAc,YAAY,MAAM;;;;AAI9C,eAAc,cAAc,UAAU,MAAM;;;;AAI5C,eAAc,cAAc,SAAS,MAAM;;;;AAI3C,eAAc,cAAc,SAAS,MAAM;;;;AAI3C,eAAc,cAAc,UAAU,MAAM;;;;AAI5C,eAAc,cAAc,SAAS,MAAM;;;;AAI3C,eAAc,cAAc,SAAS,MAAM;AAC3C,QAAO;EACN,EAAE,CAAC;AACL,IAAI,kBAAkB,cAAcE,8BAAY;CAC/C,cAAc;AACb,QAAM,iCAAiC;GACtC;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,SAAS;KACR;KACA;KACA;KACA;IACD;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH,GAAG;KACF,MAAM;KACN,SAAS;KACT;IACD;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,SAAS;IACT;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,KAAK;IACL,SAAS;KACR;KACA;KACA;KACA;IACD;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,KAAK;IACL,SAAS;KACR;KACA;KACA;KACA;IACD;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,KAAK;IACL,GAAG;IACH;GACD,CAAC;;CAEH,OAAO,OAAO;EACb,MAAM,UAAU,WAAW,OAAO,OAAO,KAAK,iBAAiB;AAC/D,UAAQ,OAAO;AACf,UAAQ,aAAa,EAAE;AACvB,MAAI,UAAU,KAAK,EAAG,+CAAuB,MAAM,SAAS,MAAM;AAClE,SAAO;;CAER,mBAAmB,QAAQ,QAAQ,SAAS,QAAQ;EACnD,IAAI,UAAU,UAAU,KAAK,QAAQ,EAAE,MAAM,OAAO,MAAM;AAC1D,SAAO,OAAO,MAAM,KAAK;GACxB,IAAI,CAAC,SAAS,YAAY,OAAO,KAAK;AACtC,WAAQ,SAAR;IACC,KAAK;AACJ,aAAQ,OAAO,OAAO,OAAO;AAC7B;IACD,KAAK;AACJ,UAAK,eAAe,QAAQ,YAAY,QAAQ,QAAQ;AACxD;IACD,KAAK;AACJ,aAAQ,QAAQ,WAAW,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,SAAS,QAAQ,MAAM;AAC9F;IACD,KAAK;AACJ,aAAQ,WAAW,OAAO,OAAO;AACjC;IACD,KAAK;AACJ,aAAQ,cAAc,OAAO,OAAO;AACpC;IACD,KAAK;AACJ,aAAQ,kBAAkB,OAAO,QAAQ;AACzC;IACD;KACC,IAAI,IAAI,QAAQ;AAChB,SAAI,MAAM,QAAS,OAAM,IAAI,WAAW,MAAM,iBAAiB,QAAQ,cAAc,SAAS,QAAQ,KAAK,WAAW;KACtH,IAAI,IAAI,OAAO,KAAK,SAAS;AAC7B,SAAI,MAAM,MAAO,EAAC,MAAM,OAAOC,sCAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,EAAE;;;AAG/G,SAAO;;CAER,eAAe,KAAK,QAAQ,SAAS;EACpC,IAAI,MAAM,OAAO,QAAQ,EAAE,MAAM,OAAO,MAAM,KAAK,KAAK;AACxD,SAAO,OAAO,MAAM,KAAK;GACxB,IAAI,CAAC,SAAS,YAAY,OAAO,KAAK;AACtC,WAAQ,SAAR;IACC,KAAK;AACJ,WAAM,OAAO,QAAQ;AACrB;IACD,KAAK;AACJ,WAAM,WAAW,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,QAAQ;AACrE;IACD,QAAS,OAAM,IAAI,WAAW,MAAM,uEAAuE;;;AAG7G,MAAI,OAAO,MAAM,OAAO,WAAW,QAAQ;;CAE5C,oBAAoB,SAAS,QAAQ,SAAS;AAC7C,MAAI,QAAQ,SAAS,EAAG,QAAO,IAAI,GAAGC,2BAAS,OAAO,CAAC,MAAM,QAAQ,KAAK;AAC1E,OAAK,IAAI,KAAK,WAAW,OAAO,KAAK,QAAQ,WAAW,EAAE;AACzD,UAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,MAAM,CAAC,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,OAAO,EAAE;AACzF,UAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,MAAM;AAC9C,cAAW,oBAAoB,QAAQ,WAAW,IAAI,QAAQ,QAAQ;AACtE,UAAO,MAAM,CAAC,MAAM;;AAErB,MAAI,QAAQ,MAAO,YAAW,oBAAoB,QAAQ,OAAO,OAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM;AAChI,MAAI,QAAQ,aAAa,KAAK,EAAG,QAAO,IAAI,GAAGA,2BAAS,OAAO,CAAC,MAAM,QAAQ,SAAS;AACvF,MAAI,QAAQ,gBAAgB,KAAK,EAAG,QAAO,IAAI,GAAGA,2BAAS,OAAO,CAAC,MAAM,QAAQ,YAAY;AAC7F,MAAI,QAAQ,oBAAoB,KAAK,EAAG,QAAO,IAAI,GAAGA,2BAAS,MAAM,CAAC,OAAO,QAAQ,gBAAgB;EACrG,IAAI,IAAI,QAAQ;AAChB,MAAI,MAAM,MAAO,EAAC,KAAK,OAAOD,sCAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,OAAO;AAC9F,SAAO;;;;;;AAMT,MAAM,aAAa,IAAI,iBAAiB;;;;;;;;;;;AC3SxC,IAAI,cAA8B,yBAAS,eAAe;;;;AAIzD,eAAc,cAAc,iBAAiB,KAAK;;;;;;AAMlD,eAAc,cAAc,UAAU,KAAK;;;;;;AAM3C,eAAc,cAAc,aAAa,KAAK;;;;;;AAM9C,eAAc,cAAc,UAAU,KAAK;;;;;;AAM3C,eAAc,cAAc,QAAQ,KAAK;;;;;;AAMzC,eAAc,cAAc,WAAW,KAAK;;;;;;AAM5C,eAAc,cAAc,aAAa,KAAK;;;;;;AAM9C,eAAc,cAAc,WAAW,KAAK;;;;;;AAM5C,eAAc,cAAc,WAAW,KAAK;;;;;;AAM5C,eAAc,cAAc,cAAc,KAAK;;;;;;AAM/C,eAAc,cAAc,eAAe,MAAM;;;;;;AAMjD,eAAc,cAAc,YAAY,MAAM;AAC9C,QAAO;EACN,EAAE,CAAC;;;;;;AAML,IAAI,WAA2B,yBAAS,cAAY;;;;AAInD,cAAW,aAAW,iBAAiB,KAAK;;;;;;AAM5C,cAAW,aAAW,cAAc,KAAK;;;;;;AAMzC,cAAW,aAAW,YAAY,KAAK;;;;;;AAMvC,cAAW,aAAW,YAAY,KAAK;;;;;;AAMvC,cAAW,aAAW,cAAc,KAAK;;;;;;AAMzC,cAAW,aAAW,cAAc,KAAK;AACzC,QAAOE;EACN,EAAE,CAAC;;;;AAIL,IAAI,aAA6B,yBAAS,cAAc;;;;;;AAMvD,cAAa,aAAa,iBAAiB,KAAK;;;;;;AAMhD,cAAa,aAAa,QAAQ,KAAK;;;;;;AAMvC,cAAa,aAAa,WAAW,KAAK;AAC1C,QAAO;EACN,EAAE,CAAC;AACL,IAAI,YAAY,cAAcC,8BAAY;CACzC,cAAc;AACb,QAAM,2BAA2B;GAChC;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,SAAS;KACR;KACA;KACA;KACA;IACD;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,SAAS;IACT;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,SAAS;IACT;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,SAAS;IACT;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,SAAS;IACT;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,SAAS;KACR;KACA;KACA;KACA;IACD;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,SAAS;IACT;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,SAAS;IACT;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,SAAS;IACT;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,SAAS;IACT;GACD,CAAC;;CAEH,OAAO,OAAO;EACb,MAAM,UAAU,WAAW,OAAO,OAAO,KAAK,iBAAiB;AAC/D,UAAQ,UAAU;AAClB,UAAQ,SAAS;AACjB,UAAQ,eAAe;AACvB,UAAQ,OAAO;AACf,UAAQ,cAAc;AACtB,UAAQ,sBAAsB;AAC9B,UAAQ,gBAAgB;AACxB,UAAQ,cAAc;AACtB,UAAQ,kBAAkB;AAC1B,UAAQ,mBAAmB;AAC3B,UAAQ,iBAAiB;AACzB,UAAQ,kBAAkB;AAC1B,UAAQ,OAAO;AACf,UAAQ,gBAAgB;AACxB,UAAQ,aAAa;AACrB,MAAI,UAAU,KAAK,EAAG,+CAAuB,MAAM,SAAS,MAAM;AAClE,SAAO;;CAER,mBAAmB,QAAQ,QAAQ,SAAS,QAAQ;EACnD,IAAI,UAAU,UAAU,KAAK,QAAQ,EAAE,MAAM,OAAO,MAAM;AAC1D,SAAO,OAAO,MAAM,KAAK;GACxB,IAAI,CAAC,SAAS,YAAY,OAAO,KAAK;AACtC,WAAQ,SAAR;IACC,KAAK;AACJ,aAAQ,UAAU,OAAO,QAAQ;AACjC;IACD,KAAK;AACJ,aAAQ,SAAS,OAAO,QAAQ;AAChC;IACD,KAAK;AACJ,aAAQ,eAAe,OAAO,QAAQ;AACtC;IACD,KAAK;AACJ,aAAQ,OAAO,OAAO,QAAQ;AAC9B;IACD,KAAK;AACJ,aAAQ,cAAc,OAAO,QAAQ;AACrC;IACD,KAAK;AACJ,aAAQ,sBAAsB,OAAO,QAAQ;AAC7C;IACD,KAAK;AACJ,aAAQ,gBAAgB,OAAO,QAAQ;AACvC;IACD,KAAK;AACJ,aAAQ,cAAc,OAAO,OAAO;AACpC;IACD,KAAK;AACJ,aAAQ,aAAa,OAAO,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,SAAS,QAAQ,WAAW;AACpG;IACD,KAAK;AACJ,aAAQ,cAAc,OAAO,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,SAAS,QAAQ,YAAY;AACtG;IACD,KAAK;AACJ,aAAQ,cAAc,WAAW,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,SAAS,QAAQ,YAAY;AAC1G;IACD,KAAK;AACJ,aAAQ,eAAe,WAAW,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,SAAS,QAAQ,aAAa;AAC5G;IACD,KAAK;AACJ,aAAQ,kBAAkB,OAAO,QAAQ;AACzC;IACD,KAAK;AACJ,aAAQ,mBAAmB,OAAO,QAAQ;AAC1C;IACD,KAAK;AACJ,aAAQ,iBAAiB,OAAO,QAAQ;AACxC;IACD,KAAK;AACJ,aAAQ,kBAAkB,OAAO,QAAQ;AACzC;IACD,KAAK;AACJ,aAAQ,OAAO,OAAO,OAAO;AAC7B;IACD,KAAK;AACJ,aAAQ,SAAS,WAAW,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,SAAS,QAAQ,OAAO;AAChG;IACD,KAAK;AACJ,aAAQ,gBAAgB,OAAO,MAAM;AACrC;IACD,KAAK;AACJ,aAAQ,YAAY,UAAU,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,SAAS,QAAQ,UAAU;AACrG;IACD,KAAK;AACJ,aAAQ,WAAW,SAAS,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,SAAS,QAAQ,SAAS;AAClG;IACD,KAAK;AACJ,aAAQ,aAAa,OAAO,MAAM;AAClC;IACD,KAAK;AACJ,aAAQ,WAAW,OAAO,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,SAAS,QAAQ,SAAS;AAChG;IACD;KACC,IAAI,IAAI,QAAQ;AAChB,SAAI,MAAM,QAAS,OAAM,IAAI,WAAW,MAAM,iBAAiB,QAAQ,cAAc,SAAS,QAAQ,KAAK,WAAW;KACtH,IAAI,IAAI,OAAO,KAAK,SAAS;AAC7B,SAAI,MAAM,MAAO,EAAC,MAAM,OAAOC,sCAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,EAAE;;;AAG/G,SAAO;;CAER,oBAAoB,SAAS,QAAQ,SAAS;AAC7C,MAAI,QAAQ,YAAY,GAAI,QAAO,IAAI,GAAGC,2BAAS,gBAAgB,CAAC,OAAO,QAAQ,QAAQ;AAC3F,MAAI,QAAQ,WAAW,GAAI,QAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,OAAO,QAAQ,OAAO;AACzF,MAAI,QAAQ,iBAAiB,GAAI,QAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,OAAO,QAAQ,aAAa;AACrG,MAAI,QAAQ,SAAS,GAAI,QAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,OAAO,QAAQ,KAAK;AACrF,MAAI,QAAQ,gBAAgB,GAAI,QAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,OAAO,QAAQ,YAAY;AACnG,MAAI,QAAQ,wBAAwB,GAAI,QAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,OAAO,QAAQ,oBAAoB;AACnH,MAAI,QAAQ,kBAAkB,GAAI,QAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,OAAO,QAAQ,cAAc;AACvG,MAAI,QAAQ,gBAAgB,EAAG,QAAO,IAAI,GAAGA,2BAAS,OAAO,CAAC,MAAM,QAAQ,YAAY;AACxF,MAAI,QAAQ,WAAY,QAAO,oBAAoB,QAAQ,YAAY,OAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM;AACtI,MAAI,QAAQ,YAAa,QAAO,oBAAoB,QAAQ,aAAa,OAAO,IAAI,IAAIA,2BAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM;AACzI,MAAI,QAAQ,YAAa,YAAW,oBAAoB,QAAQ,aAAa,OAAO,IAAI,IAAIA,2BAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM;AAC7I,MAAI,QAAQ,aAAc,YAAW,oBAAoB,QAAQ,cAAc,OAAO,IAAI,IAAIA,2BAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM;AAC/I,MAAI,QAAQ,oBAAoB,GAAI,QAAO,IAAI,IAAIA,2BAAS,gBAAgB,CAAC,OAAO,QAAQ,gBAAgB;AAC5G,MAAI,QAAQ,qBAAqB,GAAI,QAAO,IAAI,IAAIA,2BAAS,gBAAgB,CAAC,OAAO,QAAQ,iBAAiB;AAC9G,MAAI,QAAQ,mBAAmB,GAAI,QAAO,IAAI,IAAIA,2BAAS,gBAAgB,CAAC,OAAO,QAAQ,eAAe;AAC1G,MAAI,QAAQ,oBAAoB,GAAI,QAAO,IAAI,IAAIA,2BAAS,gBAAgB,CAAC,OAAO,QAAQ,gBAAgB;AAC5G,MAAI,QAAQ,SAAS,EAAG,QAAO,IAAI,IAAIA,2BAAS,OAAO,CAAC,MAAM,QAAQ,KAAK;AAC3E,MAAI,QAAQ,OAAQ,YAAW,oBAAoB,QAAQ,QAAQ,OAAO,IAAI,IAAIA,2BAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM;AACnI,MAAI,QAAQ,kBAAkB,MAAO,QAAO,IAAI,IAAIA,2BAAS,OAAO,CAAC,KAAK,QAAQ,cAAc;AAChG,MAAI,QAAQ,UAAW,WAAU,oBAAoB,QAAQ,WAAW,OAAO,IAAI,IAAIA,2BAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM;AACxI,MAAI,QAAQ,SAAU,UAAS,oBAAoB,QAAQ,UAAU,OAAO,IAAI,IAAIA,2BAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM;AACrI,MAAI,QAAQ,eAAe,MAAO,QAAO,IAAI,IAAIA,2BAAS,OAAO,CAAC,KAAK,QAAQ,WAAW;AAC1F,MAAI,QAAQ,SAAU,QAAO,oBAAoB,QAAQ,UAAU,OAAO,IAAI,IAAIA,2BAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM;EACnI,IAAI,IAAI,QAAQ;AAChB,MAAI,MAAM,MAAO,EAAC,KAAK,OAAOD,sCAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,OAAO;AAC9F,SAAO;;;;;;AAMT,MAAM,OAAO,IAAI,WAAW;AAC5B,IAAI,kBAAkB,cAAcD,8BAAY;CAC/C,cAAc;AACb,QAAM,iCAAiC,CAAC;GACvC,IAAI;GACJ,MAAM;GACN,MAAM;GACN,SAAS;IACR;IACA;IACA;IACA;GACD,EAAE;GACF,IAAI;GACJ,MAAM;GACN,MAAM;GACN,GAAG;GACH,CAAC,CAAC;;CAEJ,OAAO,OAAO;EACb,MAAM,UAAU,WAAW,OAAO,OAAO,KAAK,iBAAiB;AAC/D,UAAQ,OAAO;AACf,UAAQ,UAAU;AAClB,MAAI,UAAU,KAAK,EAAG,+CAAuB,MAAM,SAAS,MAAM;AAClE,SAAO;;CAER,mBAAmB,QAAQ,QAAQ,SAAS,QAAQ;EACnD,IAAI,UAAU,UAAU,KAAK,QAAQ,EAAE,MAAM,OAAO,MAAM;AAC1D,SAAO,OAAO,MAAM,KAAK;GACxB,IAAI,CAAC,SAAS,YAAY,OAAO,KAAK;AACtC,WAAQ,SAAR;IACC,KAAK;AACJ,aAAQ,OAAO,OAAO,OAAO;AAC7B;IACD,KAAK;AACJ,aAAQ,UAAU,OAAO,QAAQ;AACjC;IACD;KACC,IAAI,IAAI,QAAQ;AAChB,SAAI,MAAM,QAAS,OAAM,IAAI,WAAW,MAAM,iBAAiB,QAAQ,cAAc,SAAS,QAAQ,KAAK,WAAW;KACtH,IAAI,IAAI,OAAO,KAAK,SAAS;AAC7B,SAAI,MAAM,MAAO,EAAC,MAAM,OAAOC,sCAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,EAAE;;;AAG/G,SAAO;;CAER,oBAAoB,SAAS,QAAQ,SAAS;AAC7C,MAAI,QAAQ,SAAS,EAAG,QAAO,IAAI,GAAGC,2BAAS,OAAO,CAAC,MAAM,QAAQ,KAAK;AAC1E,MAAI,QAAQ,YAAY,GAAI,QAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,OAAO,QAAQ,QAAQ;EAC3F,IAAI,IAAI,QAAQ;AAChB,MAAI,MAAM,MAAO,EAAC,KAAK,OAAOD,sCAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,OAAO;AAC9F,SAAO;;;;;;AAMT,MAAM,aAAa,IAAI,iBAAiB;AACxC,IAAI,iBAAiB,cAAcD,8BAAY;CAC9C,cAAc;AACb,QAAM,gCAAgC;GACrC;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,SAAS;IACT;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH,GAAG;KACF,MAAM;KACN,SAAS;KACT;IACD;GACD,CAAC;;CAEH,OAAO,OAAO;EACb,MAAM,UAAU,WAAW,OAAO,OAAO,KAAK,iBAAiB;AAC/D,UAAQ,OAAO;AACf,UAAQ,aAAa,EAAE;AACvB,MAAI,UAAU,KAAK,EAAG,+CAAuB,MAAM,SAAS,MAAM;AAClE,SAAO;;CAER,mBAAmB,QAAQ,QAAQ,SAAS,QAAQ;EACnD,IAAI,UAAU,UAAU,KAAK,QAAQ,EAAE,MAAM,OAAO,MAAM;AAC1D,SAAO,OAAO,MAAM,KAAK;GACxB,IAAI,CAAC,SAAS,YAAY,OAAO,KAAK;AACtC,WAAQ,SAAR;IACC,KAAK;AACJ,aAAQ,OAAO,OAAO,QAAQ;AAC9B;IACD,KAAK;AACJ,aAAQ,YAAY,UAAU,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,SAAS,QAAQ,UAAU;AACrG;IACD,KAAK;AACJ,UAAK,eAAe,QAAQ,YAAY,QAAQ,QAAQ;AACxD;IACD;KACC,IAAI,IAAI,QAAQ;AAChB,SAAI,MAAM,QAAS,OAAM,IAAI,WAAW,MAAM,iBAAiB,QAAQ,cAAc,SAAS,QAAQ,KAAK,WAAW;KACtH,IAAI,IAAI,OAAO,KAAK,SAAS;AAC7B,SAAI,MAAM,MAAO,EAAC,MAAM,OAAOC,sCAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,EAAE;;;AAG/G,SAAO;;CAER,eAAe,KAAK,QAAQ,SAAS;EACpC,IAAI,MAAM,OAAO,QAAQ,EAAE,MAAM,OAAO,MAAM,KAAK,KAAK;AACxD,SAAO,OAAO,MAAM,KAAK;GACxB,IAAI,CAAC,SAAS,YAAY,OAAO,KAAK;AACtC,WAAQ,SAAR;IACC,KAAK;AACJ,WAAM,OAAO,QAAQ;AACrB;IACD,KAAK;AACJ,WAAM,MAAM,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,QAAQ;AAChE;IACD,QAAS,OAAM,IAAI,WAAW,MAAM,sEAAsE;;;AAG5G,MAAI,OAAO,MAAM,OAAO,MAAM,QAAQ;;CAEvC,oBAAoB,SAAS,QAAQ,SAAS;AAC7C,MAAI,QAAQ,SAAS,GAAI,QAAO,IAAI,GAAGC,2BAAS,gBAAgB,CAAC,OAAO,QAAQ,KAAK;AACrF,MAAI,QAAQ,UAAW,WAAU,oBAAoB,QAAQ,WAAW,OAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM;AACvI,OAAK,IAAI,KAAK,WAAW,OAAO,KAAK,QAAQ,WAAW,EAAE;AACzD,UAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,MAAM,CAAC,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,OAAO,EAAE;AACzF,UAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,MAAM;AAC9C,SAAM,oBAAoB,QAAQ,WAAW,IAAI,QAAQ,QAAQ;AACjE,UAAO,MAAM,CAAC,MAAM;;EAErB,IAAI,IAAI,QAAQ;AAChB,MAAI,MAAM,MAAO,EAAC,KAAK,OAAOD,sCAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,OAAO;AAC9F,SAAO;;;;;;AAMT,MAAM,YAAY,IAAI,gBAAgB;AACtC,IAAI,gBAAgB,cAAcD,8BAAY;CAC7C,cAAc;AACb,QAAM,+BAA+B;GACpC;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH,GAAG;KACF,MAAM;KACN,SAAS;KACT;IACD;GACD,CAAC;;CAEH,OAAO,OAAO;EACb,MAAM,UAAU,WAAW,OAAO,OAAO,KAAK,iBAAiB;AAC/D,UAAQ,UAAU;AAClB,UAAQ,SAAS;AACjB,UAAQ,aAAa,EAAE;AACvB,MAAI,UAAU,KAAK,EAAG,+CAAuB,MAAM,SAAS,MAAM;AAClE,SAAO;;CAER,mBAAmB,QAAQ,QAAQ,SAAS,QAAQ;EACnD,IAAI,UAAU,UAAU,KAAK,QAAQ,EAAE,MAAM,OAAO,MAAM;AAC1D,SAAO,OAAO,MAAM,KAAK;GACxB,IAAI,CAAC,SAAS,YAAY,OAAO,KAAK;AACtC,WAAQ,SAAR;IACC,KAAK;AACJ,aAAQ,UAAU,OAAO,QAAQ;AACjC;IACD,KAAK;AACJ,aAAQ,SAAS,OAAO,QAAQ;AAChC;IACD,KAAK;AACJ,UAAK,eAAe,QAAQ,YAAY,QAAQ,QAAQ;AACxD;IACD;KACC,IAAI,IAAI,QAAQ;AAChB,SAAI,MAAM,QAAS,OAAM,IAAI,WAAW,MAAM,iBAAiB,QAAQ,cAAc,SAAS,QAAQ,KAAK,WAAW;KACtH,IAAI,IAAI,OAAO,KAAK,SAAS;AAC7B,SAAI,MAAM,MAAO,EAAC,MAAM,OAAOC,sCAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,EAAE;;;AAG/G,SAAO;;CAER,eAAe,KAAK,QAAQ,SAAS;EACpC,IAAI,MAAM,OAAO,QAAQ,EAAE,MAAM,OAAO,MAAM,KAAK,KAAK;AACxD,SAAO,OAAO,MAAM,KAAK;GACxB,IAAI,CAAC,SAAS,YAAY,OAAO,KAAK;AACtC,WAAQ,SAAR;IACC,KAAK;AACJ,WAAM,OAAO,QAAQ;AACrB;IACD,KAAK;AACJ,WAAM,MAAM,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,QAAQ;AAChE;IACD,QAAS,OAAM,IAAI,WAAW,MAAM,qEAAqE;;;AAG3G,MAAI,OAAO,MAAM,OAAO,MAAM,QAAQ;;CAEvC,oBAAoB,SAAS,QAAQ,SAAS;AAC7C,MAAI,QAAQ,YAAY,GAAI,QAAO,IAAI,GAAGC,2BAAS,gBAAgB,CAAC,OAAO,QAAQ,QAAQ;AAC3F,MAAI,QAAQ,WAAW,GAAI,QAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,OAAO,QAAQ,OAAO;AACzF,OAAK,IAAI,KAAK,WAAW,OAAO,KAAK,QAAQ,WAAW,EAAE;AACzD,UAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,MAAM,CAAC,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,OAAO,EAAE;AACzF,UAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,MAAM;AAC9C,SAAM,oBAAoB,QAAQ,WAAW,IAAI,QAAQ,QAAQ;AACjE,UAAO,MAAM,CAAC,MAAM;;EAErB,IAAI,IAAI,QAAQ;AAChB,MAAI,MAAM,MAAO,EAAC,KAAK,OAAOD,sCAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,OAAO;AAC9F,SAAO;;;;;;AAMT,MAAM,WAAW,IAAI,eAAe;AACpC,IAAI,aAAa,cAAcD,8BAAY;CAC1C,cAAc;AACb,QAAM,4BAA4B;GACjC;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,QAAQ;IACR,SAAS;IACT;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,SAAS;IACT;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,SAAS;IACT;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH,GAAG;KACF,MAAM;KACN,GAAG;KACH;IACD;GACD,CAAC;;CAEH,OAAO,OAAO;EACb,MAAM,UAAU,WAAW,OAAO,OAAO,KAAK,iBAAiB;AAC/D,UAAQ,UAAU;AAClB,UAAQ,QAAQ,EAAE;AAClB,UAAQ,WAAW,EAAE;AACrB,MAAI,UAAU,KAAK,EAAG,+CAAuB,MAAM,SAAS,MAAM;AAClE,SAAO;;CAER,mBAAmB,QAAQ,QAAQ,SAAS,QAAQ;EACnD,IAAI,UAAU,UAAU,KAAK,QAAQ,EAAE,MAAM,OAAO,MAAM;AAC1D,SAAO,OAAO,MAAM,KAAK;GACxB,IAAI,CAAC,SAAS,YAAY,OAAO,KAAK;AACtC,WAAQ,SAAR;IACC,KAAK;AACJ,aAAQ,UAAU,OAAO,QAAQ;AACjC;IACD,KAAK;AACJ,aAAQ,MAAM,KAAK,KAAK,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,QAAQ,CAAC;AAC7E;IACD,KAAK;AACJ,aAAQ,YAAY,UAAU,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,SAAS,QAAQ,UAAU;AACrG;IACD,KAAK;AACJ,aAAQ,cAAc,UAAU,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,SAAS,QAAQ,YAAY;AACzG;IACD,KAAK;AACJ,UAAK,eAAe,QAAQ,UAAU,QAAQ,QAAQ;AACtD;IACD;KACC,IAAI,IAAI,QAAQ;AAChB,SAAI,MAAM,QAAS,OAAM,IAAI,WAAW,MAAM,iBAAiB,QAAQ,cAAc,SAAS,QAAQ,KAAK,WAAW;KACtH,IAAI,IAAI,OAAO,KAAK,SAAS;AAC7B,SAAI,MAAM,MAAO,EAAC,MAAM,OAAOC,sCAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,EAAE;;;AAG/G,SAAO;;CAER,eAAe,KAAK,QAAQ,SAAS;EACpC,IAAI,MAAM,OAAO,QAAQ,EAAE,MAAM,OAAO,MAAM,KAAK,KAAK;AACxD,SAAO,OAAO,MAAM,KAAK;GACxB,IAAI,CAAC,SAAS,YAAY,OAAO,KAAK;AACtC,WAAQ,SAAR;IACC,KAAK;AACJ,WAAM,OAAO,QAAQ;AACrB;IACD,KAAK;AACJ,WAAM,OAAO,QAAQ;AACrB;IACD,QAAS,OAAM,IAAI,WAAW,MAAM,gEAAgE;;;AAGtG,MAAI,OAAO,MAAM,OAAO;;CAEzB,oBAAoB,SAAS,QAAQ,SAAS;AAC7C,MAAI,QAAQ,YAAY,GAAI,QAAO,IAAI,GAAGC,2BAAS,gBAAgB,CAAC,OAAO,QAAQ,QAAQ;AAC3F,OAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,MAAM,QAAQ,IAAK,MAAK,oBAAoB,QAAQ,MAAM,IAAI,OAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM;AACzJ,MAAI,QAAQ,UAAW,WAAU,oBAAoB,QAAQ,WAAW,OAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM;AACvI,MAAI,QAAQ,YAAa,WAAU,oBAAoB,QAAQ,aAAa,OAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM;AAC3I,OAAK,IAAI,KAAK,WAAW,OAAO,KAAK,QAAQ,SAAS,CAAE,QAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,MAAM,CAAC,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,OAAO,EAAE,CAAC,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,OAAO,QAAQ,SAAS,GAAG,CAAC,MAAM;EACrN,IAAI,IAAI,QAAQ;AAChB,MAAI,MAAM,MAAO,EAAC,KAAK,OAAOD,sCAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,OAAO;AAC9F,SAAO;;;;;;AAMT,MAAM,QAAQ,IAAI,YAAY;;;;ACxwB9B,MAAa,YAAY,QACvB,MAAM,uBAAuB,IAAI,GAAG;AAGtC,MAAa,aAAa,MAA8B;AACtD,SAAQ,GAAR;EACE,KAAKE,uBAAW,SACd,QAAOC,SAAW;EACpB,KAAKD,uBAAW,OACd,QAAOC,SAAW;EACpB,KAAKD,uBAAW,OACd,QAAOC,SAAW;EACpB,KAAKD,uBAAW,SACd,QAAOC,SAAW;EACpB,KAAKD,uBAAW,SACd,QAAOC,SAAW;EACpB,QACE,QAAOA,SAAW;;;;;;AAOxB,SAAgB,uBAAuB,KAAsB;CAC3D,MAAMC,SAAgC,EAAE;AAExC,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,IAA+B,CACvE,QAAO,OAAO,qBAAqB,MAAM;AAG3C,QAAO,OAAO,OAAO,EAAE,QAAQ,CAAC;;;;;AAMlC,SAAgB,qBAAqB,OAAuB;AAC1D,KAAI,UAAU,QAAQ,UAAU,OAC9B,QAAO,MAAM,OAAO,EAAE,MAAM;EAAE,WAAW;EAAa,WAAW;EAAG,EAAE,CAAC;AAGzE,KAAI,OAAO,UAAU,UACnB,QAAO,MAAM,OAAO,EAAE,MAAM;EAAE,WAAW;EAAa,WAAW;EAAO,EAAE,CAAC;AAG7E,KAAI,OAAO,UAAU,SACnB,QAAO,MAAM,OAAO,EAAE,MAAM;EAAE,WAAW;EAAe,aAAa;EAAO,EAAE,CAAC;AAGjF,KAAI,OAAO,UAAU,SACnB,QAAO,MAAM,OAAO,EAAE,MAAM;EAAE,WAAW;EAAe,aAAa;EAAO,EAAE,CAAC;AAGjF,KAAI,MAAM,QAAQ,MAAM,EAAE;EACxB,MAAM,YAAY,EAChB,QAAQ,MAAM,KAAK,SAAS,qBAAqB,KAAK,CAAC,EACxD;AACD,SAAO,MAAM,OAAO,EAAE,MAAM;GAAE,WAAW;GAAa;GAAW,EAAE,CAAC;;AAGtE,KAAI,OAAO,UAAU,YAAY,UAAU,MAAM;EAC/C,MAAM,cAAc,uBAAuB,MAAM;AACjD,SAAO,MAAM,OAAO,EAAE,MAAM;GAAE,WAAW;GAAe;GAAa,EAAE,CAAC;;AAI1E,QAAO,MAAM,OAAO,EAAE,MAAM;EAAE,WAAW;EAAe,aAAa,OAAO,MAAM;EAAE,EAAE,CAAC;;;;;;;;;;;;ACrEzF,MAAM,eAAe,WAAW;AAChC,MAAM,qBAAqB,QAAQ;AAEnC,IAAa,sBAAb,MAAiC;;;;CAI/B,OAAO,kBAAwB;AAC7B,SAAO,IAAI,cAAc;;;;;CAM3B,OAAO,yBAAyB,KAAiC;AAC/D,SAAO,mBAAmB;;;;;;;;;;ACwB9B,SAAS,kBAAiC;CACxC,IAAI,aAAa,QAAQ,KAAK;AAG9B,KAAI,WAAW,SAAS,eAAe,EAAE;EAEvC,MAAM,mBAAmB,WAAW,QAAQ,eAAe;AAC3D,MAAI,qBAAqB,GACvB,cAAa,WAAW,UAAU,GAAG,iBAAiB;;AAK1D,QAAO,eAAe,aAAK,QAAQ,WAAW,EAAE;EAC9C,MAAM,kBAAkB,aAAK,KAAK,YAAY,eAAe;AAC7D,MAAI,WAAG,WAAW,gBAAgB,CAChC,QAAO;AAET,eAAa,aAAK,QAAQ,WAAW;;AAGvC,QAAO;;;;;;AAOT,SAAgB,iBAAoC;AAClD,KAAI;EACF,MAAM,cAAc,iBAAiB;AACrC,MAAI,CAAC,aAAa;AAChB,UAAO,MAAM,uDAAuD;AACpE,UAAO;;EAGT,MAAM,aAAa,aAAK,KAAK,aAAa,SAAS,cAAc;AAEjE,MAAI,CAAC,WAAG,WAAW,WAAW,EAAE;AAC9B,UAAO,MAAM,2BAA2B,aAAa;AACrD,UAAO;;AAGT,SAAO,MAAM,uBAAuB,aAAa;EAEjD,MAAM,gBAAgB,WAAG,aAAa,YAAY,OAAO;EACzD,MAAM,SAASC,gBAAK,KAAK,cAAc;AAEvC,SAAO,MAAM,2CAA2C,OAAO,SAAS,QAAQ,YAAY;AAC5F,SAAO;UACA,OAAO;AACd,SAAO,MAAM,yBAAyB,MAAM;AAC5C,SAAO;;;;;;ACnGX,SAAgB,kBAA2B;AACzC,QACE,QAAQ,IAAI,iBAAiB,UAAa,OAAQ,OAAe,kBAAkB;;AAIvF,SAAgB,MAAM,eAA6B;AAEjD,KAAI,CAAC,iBAAiB,OAAO,kBAAkB,SAC7C,QAAO;AAGT,KAAI;AAGF,SAAO,cAAc,OAAO,iBAAiB;UACtC,OAAO;AAGd,SAAO;;;;;;ACVX,IAAM,SAAN,MAAa;CAUX,YAAY,QAAsB;OARjB,SAAS;GACxB,QAAQ;GACR,OAAO;GACP,MAAM;GACN,MAAM;GACN,OAAO;GACR;AAGC,OAAK,SAAS;;CAGhB,AAAQ,UAAU,OAA0B;AAC1C,SAAO,KAAK,OAAO,UAAU,KAAK,OAAO,KAAK,OAAO;;CAGvD,AAAQ,cAAc,OAAiB,SAAyB;EAC9D,MAAM,cAAc,oBAAoB,iBAAiB;AAIzD,SAAO,GAHW,uBAAuB,OAAO,YAAY,aAAa,GAAG,YAGxD,GADL,KAAK,OAAO,SAAS,IAAI,KAAK,OAAO,OAAO,MAAM,iBACjC;;CAGlC,MAAM,SAAiB,GAAG,MAAuB;AAC/C,MAAI,KAAK,UAAU,QAAQ,CACzB,SAAQ,MAAM,KAAK,cAAc,SAAS,QAAQ,EAAE,GAAG,KAAK;;CAIhE,KAAK,SAAiB,GAAG,MAAuB;AAC9C,MAAI,KAAK,UAAU,OAAO,CACxB,SAAQ,KAAK,KAAK,cAAc,QAAQ,QAAQ,EAAE,GAAG,KAAK;;CAI9D,KAAK,SAAiB,GAAG,MAAuB;AAC9C,MAAI,KAAK,UAAU,OAAO,CACxB,SAAQ,IAAI,KAAK,cAAc,QAAQ,QAAQ,EAAE,GAAG,KAAK;;CAI7D,MAAM,SAAiB,GAAG,MAAuB;AAC/C,MAAI,KAAK,UAAU,QAAQ,CACzB,SAAQ,IAAI,KAAK,cAAc,SAAS,QAAQ,EAAE,GAAG,KAAK;;CAI9D,YAAY,OAAuB;AACjC,OAAK,OAAO,WAAW;;CAGzB,cAAwB;AACtB,SAAO,KAAK,OAAO;;;AAKvB,IAAIC;AAEJ,SAAgB,aAAa,QAA8B;AACzD,QAAO,IAAI,OAAO,OAAO;;AAG3B,SAAgB,uBAAuB,QAA4B;AACjE,gBAAe,aAAa,OAAO;;AAGrC,SAAgB,YAAoB;AAClC,KAAI,CAAC,aAEH,gBAAe,aAAa,EAAE,UAAU,QAAQ,CAAC;AAEnD,QAAO;;;;;;;;;;;;;;AAeT,MAAa,SAAS;CACpB,QAAQ,SAAiB,GAAG,SAAoB,WAAW,CAAC,MAAM,SAAS,GAAG,KAAK;CACnF,OAAO,SAAiB,GAAG,SAAoB,WAAW,CAAC,KAAK,SAAS,GAAG,KAAK;CACjF,OAAO,SAAiB,GAAG,SAAoB,WAAW,CAAC,KAAK,SAAS,GAAG,KAAK;CACjF,QAAQ,SAAiB,GAAG,SAAoB,WAAW,CAAC,MAAM,SAAS,GAAG,KAAK;CACnF,cAAc,UAAoB,WAAW,CAAC,YAAY,MAAM;CAChE,mBAAmB,WAAW,CAAC,aAAa;CAC7C;;;;;;;ACnGD,SAAgB,yBAAyB,EACvC,YACA,cACA,qBAKO;AACP,QAAO,KAAK,kCAAkC;EAC5C;EACc;EACd;EACD,CAAC;AACF,KAAI;AAGF,MADa,cAAc,aAAa,CAAC,SAAS,KACrC,cAAc,OACzB;EAGF,MAAM,eAAe,cAAc,aAAa,CAAC,yBAAyB;AAC1E,MAAI,aACF,cAAa,wCAAwC;GACnD;GACA,kBAAkB;GAClB;GACD,CAAC;UAEG,GAAG;AACV,SAAO,MAAM,yCAAyC,EAAE;;;;;;AAO5D,SAAgB,6BAA6B,EAC3C,uBACA,cAIO;AACP,QAAO,KAAK,sCAAsC;EAChD;EACA;EACD,CAAC;AACF,KAAI;EACF,MAAM,eAAe,cAAc,aAAa,CAAC,yBAAyB;AAC1E,MAAI,gBAAgB,WAClB,cAAa,6BAA6B;GACxC;GACA;GACD,CAAC;UAEG,GAAG;AACV,SAAO,MAAM,6CAA6C,EAAE;;;;;;ACtDhE,IAAsB,wBAAtB,MAAsB,8BAA8B,0BAA0B;CAO5E,YAAY,qBAA6B,SAAkC,EAAE,EAAE;AAC7E,QAAM,qBAAqB,OAAO;OAP1B,WAA0C,EAAE;OAC5C,SAAuC,EAAE;OACzC,WAAW;EAOnB,IAAI,UAAU,KAAK,MAAM;AACzB,MAAI,WAAW,CAAC,MAAM,QAAQ,QAAQ,CACpC,WAAU,CAAC,QAAQ;AAErB,OAAK,WAAW,WAAW,EAAE;AAE7B,MAAI,KAAK,QAAQ,QACf,MAAK,QAAQ;;;;;;;;;CAajB,YAAY,mBAA6B,WAAkB,oBAAoB,OAAgB;AAC7F,MAAI,OAAOC,cAAY,YACrB,QAAO,kBAAkB,SAAS,IAAI;AAExC,MAAIA,cAAY,MACd,QAAO;AAET,SAAO,kBAAkB,MAAM,2CACnBA,WAAS,kBAAkB,EACnC,mBACD,CAAC,CACH;;;;;;;CAQH,AAAQ,uBAAuB,SAAsC;AACnE,MAAI,CAAC,QACH;AAEF,MAAI;GACF,MAAM,cAAc,aAAK,KAAK,SAAS,eAAe;GACtD,MAAM,EAAE,uBAAY,QAAQ,YAAY;AACxC,UAAO,OAAOA,cAAY,WAAWA,YAAU;WACxC,OAAO;AACd,UAAO,KAAK,kCAAkC,QAAQ,IAAI,MAAM;;;CAKpE,SAAe;AACb,MAAI,KAAK,SACP;AAEF,OAAK,WAAW;AAGhB,OAAK,MAAMC,YAAU,KAAK,UAAU;GAElC,MAAM,aAAa,WAAc,MAAc,YAAqB;AAClE,WAAO,KAAK,WAAWA,UAAQC,WAAS,MAAM,QAAQ;;GAIxD,MAAMC,UAAkB,WAAS,MAAM,YAAY;AAEjD,QAAI,CAAC,WAAW,aAAK,WAAW,KAAK,EAAE;KACrC,MAAM,aAAa,aAAK,MAAM,KAAK;AACnC,YAAO,WAAW;AAClB,eAAU,WAAW;;AAEvB,WAAO,KAAK,WAAWF,UAAQC,WAAS,MAAM,WAAW,OAAU;;GAGrE,MAAM,UAAU,IAAIE,2BAAY,CAACH,SAAO,KAAK,EAAE,EAAE,WAAW,MAAM,EAAE,UAAU;AAC9E,QAAK,OAAO,KAAK,QAAQ;GAGzB,MAAM,UAAU,IAAII,0BAAW,CAACJ,SAAO,KAAK,EAAE,EAAE,WAAW,OAAO,EAAE,OAAO;AAC3E,QAAK,OAAO,KAAK,QAAQ;;;CAI7B,YAAqB;AACnB,SAAO,KAAK;;;;;CAMd,AAAU,oBAAoB,eAA0B;AACtD,wBAAsB,gBAAgB,IAAI,cAAc;;;;;CAM1D,AAAU,gBAAgB,eAA6B;AACrD,SAAO,sBAAsB,gBAAgB,IAAI,cAAc;;CAGjE,AAAQ,WACN,UACA,WACA,MACA,SACK;AAEL,MAAI,CAAC,SAAS;AACZ,OAAI,OAAOA,SAAO,UAAU,YAAY;AACtC,aAAO,gBAAgBC;AACvB,QAAI,KAAK,UAAU;AACjB,YAAO,MAAM,mBAAmB,KAAK,8BAA8B;AACnE,YAAOD,SAAO,MAAMC,UAAQ;;;AAGhC,UAAOA;;EAGT,MAAMF,YAAU,KAAK,uBAAuB,QAAQ;AACpD,WAAO,gBAAgBA;AAEvB,MAAIC,SAAO,SAAS,MAAM;AACxB,OACE,KAAK,YAAYA,SAAO,mBAAmBD,UAAQ,IACnD,OAAOC,SAAO,UAAU,YACxB;AACA,aAAO,gBAAgBC;AACvB,QAAI,KAAK,UAAU;AACjB,YAAO,MACL,wBAAwB,KAAK,IAAIF,UAAQ,uBAAuB,KAAK,sBACtE;AACD,YAAOC,SAAO,MAAMC,WAASD,SAAO,cAAc;;cAE3CD,WAMT;QAAI,CAJkC,KAAK,SACxC,QAAQ,MAAM,EAAE,SAAS,KAAK,CAC9B,MAAM,MAAM,KAAK,YAAY,EAAE,mBAAmBA,UAAQ,CAAC,EAE1B;AAClC,YAAO,MACL,+BAA+B,KAAK,WAAWA,UAAQ,yBAAyBC,SAAO,kBAAkB,KAAK,KAAK,CAAC,uEACrH;AACD,8BAAyB;MACvB,YAAY;MACZ,cAAcD;MACd,mBAAmBC,SAAO;MAC3B,CAAC;;UAEC;AACL,WAAO,MACL,+BAA+B,KAAK,yBAAyBA,SAAO,kBAAkB,KAAK,KAAK,CAAC,uEAClG;AACD,6BAAyB;KACvB,YAAY;KACZ,cAAc;KACd,mBAAmBA,SAAO;KAC3B,CAAC;;AAEJ,UAAOC;;EAIT,MAAM,QAAQD,SAAO,SAAS,EAAE;EAChC,MAAM,iBAAiB,aAAK,UAAU,KAAK;EAC3C,MAAM,gCAAgC,MACnC,QAAQ,MAAM,EAAE,SAAS,eAAe,CACxC,QAAQ,MAAM,KAAK,YAAY,EAAE,mBAAmBD,WAAS,MAAM,CAAC;AAGvE,MACE,8BAA8B,WAAW,KACzC,MAAM,MAAM,MAAM,EAAE,SAAS,eAAe,EAQ5C;OAAI,CAL+B,KAAK,SACrC,SAAS,MAAM,EAAE,SAAS,EAAE,CAAC,CAC7B,QAAQ,MAAM,EAAE,SAAS,eAAe,CACxC,MAAM,MAAM,KAAK,YAAY,EAAE,mBAAmBA,WAAS,MAAM,CAAC,EAEpC;AAC/B,WAAO,MACL,6BAA6B,eAAe,WAAWA,UAAQ,gHAChE;AACD,6BAAyB;KACvB,YAAY;KACZ,cAAcA;KACd,mBAAmB,MAAM,SAAS,MAAM,EAAE,kBAAkB;KAC7D,CAAC;;;AAIN,SAAO,8BAA8B,QAAQ,gBAAgB,SAAS;AACpE,QAAK,gBAAgB;AACrB,OAAI,KAAK,UAAU;AACjB,WAAO,MACL,iBAAiB,KAAK,KAAK,IAAIA,UAAQ,uBAAuB,KAAK,sBACpE;AACD,WAAO,KAAK,MAAM,gBAAgBC,SAAO,cAAc;;AAEzD,UAAO;KACNC,UAAQ;;;sBAlNE,kCAAkB,IAAI,SAAiB;;;;ACbxD,IAAa,8BAAb,MAAyC;CAQvC,YAAY,EACV,MACA,mBACA,OACA,SAMC;AACD,OAAK,OAAO;AACZ,OAAK,oBAAoB;AACzB,OAAK,QAAQ;AACb,OAAK,QAAQ,SAAS,EAAE;;;;;;;ACnB5B,MAAa,kCAAkC;AAE/C,MAAa,kEAA+C,mBAAmB;AAC/E,MAAa,4DAAyC,cAAc;AACpE,MAAa,mEAAgD,mBAAmB;AAChF,MAAa,6EACX,6BACD;AACD,MAAa,kEAA+C,oBAAoB;AAEhF,IAAY,gEAAL;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BL;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC3CF,IAAa,uBAAb,MAAa,qBAAqB;CAYhC,AAAQ,cAAc;OAVd,kCAA+B,IAAI,KAAK;OACxC,kCAAuC,IAAI,KAAK;OAChD,oBAA2C;OAGlC,iBAAiB,MAAU;OAG3B,sBAAsB,MAAS;AAG9C,OAAK,sBAAsB;;;;;CAM7B,OAAO,cAAoC;AACzC,MAAI,CAAC,qBAAqB,SACxB,sBAAqB,WAAW,IAAI,sBAAsB;AAE5D,SAAO,qBAAqB;;;;;CAM9B,eAAe,SAA0B;AACvC,SAAO,KAAK,gBAAgB,IAAI,QAAQ;;;;;CAM1C,WAAW,SAAuB;AAChC,MAAI,CAAC,KAAK,gBAAgB,IAAI,QAAQ,EAAE;AACtC,QAAK,gBAAgB,IAAI,QAAQ;GACjC,MAAM,eAAe,oBAAoB,iBAAiB;AAC1D,QAAK,gBAAgB,IAAI,SAAS,aAAa,SAAS,CAAC;AACzD,UAAO,MAAM,yCAAyC,UAAU;;;;;;CAOpE,AAAQ,uBAA6B;AACnC,MAAI,KAAK,kBACP;AAGF,OAAK,oBAAoB,kBAAkB;AACzC,QAAK,kBAAkB;KACtB,KAAK,oBAAoB;AAG5B,MAAI,KAAK,kBAAkB,MACzB,MAAK,kBAAkB,OAAO;;;;;CAOlC,AAAQ,mBAAyB;EAE/B,MAAM,MADe,oBAAoB,iBAAiB,CACjC,SAAS;EAClC,MAAMI,gBAA0B,EAAE;AAElC,OAAK,MAAM,CAAC,SAAS,cAAc,KAAK,gBAAgB,SAAS,CAC/D,KAAI,MAAM,YAAY,KAAK,eACzB,eAAc,KAAK,QAAQ;AAI/B,OAAK,MAAM,WAAW,eAAe;AACnC,QAAK,gBAAgB,OAAO,QAAQ;AACpC,QAAK,gBAAgB,OAAO,QAAQ;;AAGtC,MAAI,cAAc,SAAS,EACzB,QAAO,MACL,qCAAqC,cAAc,OAAO,2BAC3D;;;qBApFU,WAAwC;;;;;ACmEzD,IAAa,YAAb,MAAa,UAAU;;;;CAIrB,OAAO,WAAW,SAA6C;AAC7D,MAAI;GAEF,MAAM,SAAS,cAAc,aAAa,CAAC,WAAW;GACtD,MAAM,gBAAgB,QAAQ,iBAAiBC,sBAAQ,QAAQ;GAI/D,MAAM,aAAaC,oBAAM,QAAQ,cAAc;AAC/C,OAAI,YAAY;IACd,MAAM,gBAAgB,WAAW,aAAa,CAAC;AAG/C,QAF6B,qBAAqB,aAAa,CAEtC,eAAe,cAAc,EAAE;AACtD,YAAO,MACL,2CAA2C,QAAQ,KAAK,YAAY,cAAc,aACnF;AACD,YAAO;;;GAKX,MAAM,OAAO,OAAO,UAClB,QAAQ,MACR;IACE,MAAM,QAAQ,QAAQC,uBAAS;IAC/B,YAAY,QAAQ,cAAc,EAAE;IACrC,EACD,cACD;GAED,MAAM,cAAc,KAAK,aAAa;GAEtC,MAAM,aAAaD,oBAChB,QAAQ,eAAe,KAAK,CAE5B,SAAS,uBAAuB,QAAQ,KAAK,CAC7C,SAAS,8BAA8B,QAAQ,cAAc;AAEhE,UAAO;IACL,SAAS,YAAY;IACrB,QAAQ,YAAY;IACpB;IACA,SAAS;IACT,eAAe,QAAQ;IACxB;WACM,OAAO;AACd,UAAO,MAAM,kCAAkC,MAAM;AACrD,UAAO;;;;;;CAOX,OAAO,SAAY,UAAoB,IAAgB;AACrD,SAAOD,sBAAQ,KAAK,SAAS,SAAS,GAAG;;;;;;;;;;;;;;;;CAiB3C,OAAO,qBACL,MACA,sBACA,SACA,IACG;EAEH,MAAM,cAAcC,oBAAM,eAAe,EAAE,aAAa;AACxD,MAAI,aAIF;OAHgCD,sBAC7B,QAAQ,CACR,SAAS,uCAAuC,EACtB;AAC3B,WAAO,MACL,0DAA0D,YAAY,OAAO,iBAAiB,QAAQ,YAAY,yBAAyB,QAAQ,sBACpJ;AACD,WAAO,sBAAsB;;;EAIjC,MAAM,EACJ,MACA,MACA,aACA,qBACA,aACA,WACA,YACA,mBACA,eACA,UACA,4BACE;EAEJ,IAAIG,WAA4B;AAEhC,MAAI;AAEF,cAAW,UAAU,WAAW;IAC9B;IACA;IACA,eAAe,QAAQ;IACvB,YAAY;MACT,iBAAiB,OAAO;MACxB,iBAAiB,eAAe;MAChC,iBAAiB,iBAAiB;MAClC,iBAAiB,uBAAuB;MACxC,iBAAiB,eAAe;MAChC,iBAAiB,cAAc,qBAAqB,WAAW;MAC/D,iBAAiB,mBAAmB;KACrC,GAAI,qBAAqB,GACtB,iBAAiB,sBAAsB,KAAK,UAAU,kBAAkB,EAC1E;KACD,GAAI,YAAY,GACb,iBAAiB,WAAW,KAAK,UAAU,SAAS,EACtD;KACF;IACF,CAAC;WACK,OAAO;AACd,UAAO,MAAM,qCAAqC,MAAM;AACxD,cAAW;;AAGb,MAAI,CAAC,SACH,KAAI,SAAS,cAAc,OAEzB,OAAM,IAAI,MAAM,qCAAqC;MAGrD,QAAO,sBAAsB;AAKjC,MAAI,wBACF,UAAS,UAAU,SAAS,QAAQ,SAAS,wCAAwC,KAAK;AAI5F,SAAO,UAAU,SAAS,gBAAgB,GAAG,SAAS,CAAC;;;;;CAMzD,OAAO,qBAAsC;AAC3C,MAAI;GACF,MAAM,aAAaF,oBAAM,eAAe;AACxC,OAAI,CAAC,WACH,QAAO;GAGT,MAAM,cAAc,WAAW,aAAa;AAC5C,UAAO;IACL,SAAS,YAAY;IACrB,QAAQ,YAAY;IACpB,MAAM;IACN,SAASD,sBAAQ,QAAQ;IACzB,eAAeA,sBAAQ,QAAQ,CAAC,SAAS,6BAA6B;IACvE;WACM,OAAO;AACd,UAAO,MAAM,8CAA8C,MAAM;AACjE,UAAO;;;;;;CAOX,OAAO,kBAAkB,MAAY,0BAA0D;AAC7F,MAAI;GACF,MAAMI,aAAyB;IAC7B,GAAI,yBAAyB,QAAQ,GAClC,iBAAiB,OAAO,yBAAyB,MACnD;IACD,GAAI,yBAAyB,eAAe,GACzC,iBAAiB,eAAe,yBAAyB,aAC3D;IACD,GAAI,yBAAyB,uBAAuB,GACjD,iBAAiB,uBAAuB,yBAAyB,qBACnE;IACD,GAAI,yBAAyB,eAAe,GACzC,iBAAiB,eAAe,yBAAyB,aAC3D;IACD,GAAI,yBAAyB,aAAa,GACvC,iBAAiB,iBAAiB,yBAAyB,WAC7D;IACD,GAAI,yBAAyB,iBAAiB,GAC3C,iBAAiB,mBAAmB,yBAAyB,eAC/D;IACD,GAAI,yBAAyB,cAAc,GACxC,iBAAiB,cAAc,qBAAqB,yBAAyB,WAAW,EAC1F;IACD,GAAI,yBAAyB,eAAe,GACzC,iBAAiB,eAAe,KAAK,UAAU,yBAAyB,YAAY,EACtF;IACD,GAAI,yBAAyB,qBAAqB,GAC/C,iBAAiB,sBAAsB,KAAK,UAC3C,yBAAyB,kBAC1B,EACF;IACD,GAAI,yBAAyB,sBAAsB,GAChD,iBAAiB,uBAAuB,KAAK,UAC5C,yBAAyB,mBAC1B,EACF;IACD,GAAI,yBAAyB,YAAY,GACtC,iBAAiB,WAAW,KAAK,UAAU,yBAAyB,SAAS,EAC/E;IACD,GAAI,yBAAyB,qBAAqB,GAC/C,iBAAiB,qBAAqB,KAAK,UAC1C,yBAAyB,kBAC1B,EACF;IACF;AACD,QAAK,cAAc,WAAW;WACvB,OAAO;AACd,UAAO,MAAM,2CAA2C,MAAM;;;CAIlE,OAAO,UAAU,MAAY,QAA0B;AACrD,MAAI;AACF,QAAK,UAAU,OAAO;WACf,OAAO;AACd,UAAO,MAAM,wCAAwC,MAAM;;;;;;;;CAS/D,OAAO,QAAQ,MAAY,QAA2D;AACpF,MAAI;AACF,OAAI,OACF,MAAK,UAAU,OAAO;AAExB,QAAK,KAAK;WACH,OAAO;AACd,UAAO,MAAM,gCAAgC,MAAM;;;;;;CAOvD,OAAO,oBAAmC;AACxC,MAAI;AAEF,UADiB,UAAU,oBAAoB,EAC9B,WAAW;WACrB,OAAO;AACd,UAAO,MAAM,6CAA6C,MAAM;AAChE,UAAO;;;CAIX,OAAO,wBAAwB,eAAuC;AACpE,MAAI;AACF,UAAOJ,sBAAQ,QAAQ,CAAC,SAAS,6BAA6B,cAAc;WACrE,OAAO;AACd,UAAO,MAAM,oDAAoD,MAAM;AACvE,UAAO;;;;;;CAOX,OAAO,0BAAyC;AAC9C,MAAI;AAEF,UADsBA,sBAAQ,QAAQ,CACjB,SAAS,4BAA4B;WACnD,OAAO;AACd,UAAO,MAAM,oDAAoD,MAAM;AACvE,UAAO;;;;;;CAOX,OAAO,mBAAkC;AACvC,MAAI;AAEF,UADiB,UAAU,oBAAoB,EAC9B,UAAU;WACpB,OAAO;AACd,UAAO,MAAM,4CAA4C,MAAM;AAC/D,UAAO;;;;;;CAOX,OAAO,eAAuB;EAC5B,IAAI,UAAU;EACd,IAAI,SAAS;AACb,MAAI;AACF,aAAU,UAAU,mBAAmB;AACvC,YAAS,UAAU,kBAAkB;WAC9B,OAAO;AACd,UAAO,MAAM,uCAAuC,MAAM;AAC1D,UAAO;;AAGT,MAAI,WAAW,OACb,QAAO,SAAS,QAAQ,QAAQ;AAGlC,SAAO;;;;;;;;;AChZX,MAAM,wBAAwB;CAC5B,MAAM;CACN,SAAS;CACT,IAAI;CACL;;;;;;;;AAWD,eAAsB,iBAAiB,QAAgB,UAAmC;CACxF,MAAM,qBAAqB,SAAS,aAAa,CAAC,MAAM;AAExD,KAAI,sBAAsB,sBACxB,QAAO,IAAI,SAAS,SAAS,WAAW;AAEtC,EAAC,KADoB,sBAAsB,qBACf,SAAS,KAAmB,YAAoB;AAC1E,OAAI,IACF,QAAO,IAAI;OAEX,SAAQ,QAAQ;IAElB;GACF;AAGJ,QAAO,MAAM,qBAAqB,SAAS,uBAAuB;AAClE,QAAO,QAAQ,QAAQ,OAAO;;AAchC,SAAgB,iBAAiB,SAAmD;CAClF,MAAMK,aAAkC,EAAE;AAC1C,MAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,QAAQ,CACjD,YAAW,KAAK,aAAa,IAAI;AAEnC,QAAO;;;;;;;;;;;ACHT,SAAgB,cAAc,QAAqC;CACjE,MAAMC,UAAoB,OAAO,KAAK,UAAU;AAC9C,MAAI,OAAO,SAAS,MAAM,CACxB,QAAO;AAET,SAAO,OAAO,KAAK,MAAM;GACzB;AAEF,QAAO,OAAO,OAAO,QAAQ;;;;;ACzD/B,MAAMC,uBAAoD;CAExD,oBAAoB,YAAY;CAGhC,aAAa,YAAY;CAGzB,YAAY,YAAY;CAGxB,mBAAmB,YAAY;CAC/B,0BAA0B,YAAY;CACtC,4BAA4B,YAAY;CAGxC,YAAY,YAAY;CACxB,mBAAmB,YAAY;CAG/B,iBAAiB,YAAY;CAG7B,oBAAoB,YAAY;CAChC,sBAAsB,YAAY;CAClC,aAAa,YAAY;CACzB,eAAe,YAAY;CAG3B,cAAc,YAAY;CAG1B,iBAAiB,YAAY;CAC7B,mBAAmB,YAAY;CAG/B,YAAY,YAAY;CACxB,mBAAmB,YAAY;CAG/B,mBAAmB,YAAY;CAC/B,YAAY,YAAY;CAGxB,uBAAuB,YAAY;CAGnC,qCAAqC,YAAY;CACjD,uBAAuB,YAAY;CAGnC,mBAAmB,YAAY;CAG/B,cAAc,YAAY;CAC1B,aAAa,YAAY;CACzB,aAAa,YAAY;CACzB,aAAa,YAAY;CACzB,cAAc,YAAY;CAC1B,aAAa,YAAY;CACzB,cAAc,YAAY;CAC1B,aAAa,YAAY;CAGzB,cAAc,YAAY;CAC1B,aAAa,YAAY;CACzB,aAAa,YAAY;CACzB,aAAa,YAAY;CACzB,cAAc,YAAY;CAG1B,aAAa,YAAY;CACzB,cAAc,YAAY;CAC1B,aAAa,YAAY;CACzB,aAAa,YAAY;CACzB,aAAa,YAAY;CAGzB,mBAAmB,YAAY;CAC/B,oBAAoB,YAAY;CAChC,sBAAsB,YAAY;CAGlC,4BAA4B,YAAY;CACxC,mBAAmB,YAAY;CAC/B,mBAAmB,YAAY;CAC/B,kBAAkB,YAAY;CAC/B;;;;AAKD,eAAsB,gBAAgB,EACpC,YACA,mBAIkB;CAElB,IAAI,kBAAkB;AAEtB,KAAI,gBACF,KAAI;AACF,oBAAkB,MAAM,iBAAiB,YAAY,gBAAgB;UAC9D,OAAO;AACd,SAAO,KAAK,2CAA2C,gBAAgB,IAAI,MAAM;;AAIrF,QAAO,gBAAgB,SAAS,SAAS;;;;;;;AAQ3C,SAAgB,eACd,aACyB;AACzB,KAAI,CAAC,YACH;CAKF,MAAM,oBACJ,MAAM,QAAQ,YAAY,IAAI,YAAY,SAAS,IAAI,YAAY,KAAK;AAE1E,KAAI,CAAC,qBAAqB,OAAO,sBAAsB,UAAU;AAC/D,SAAO,MAAM,gCAAgC,cAAc;AAC3D;;AAKF,QAAO,qBADU,kBAAkB,aAAa,CAAC,MAAM,IAAI,CAAC,GAAG,MAAM;;AAIvE,MAAa,2BAA2B,IAAI,IAAI,CAAC,YAAY,MAAM,YAAY,WAAW,CAAC;;;;;;;ACnI3F,IAAa,mBAAb,cAAsCC,oBAAa;CAoBjD,YAAY,UAAmC,EAAE,EAAE;AACjD,SAAO;OAJF,gBAAyB;OACzB,mBAA4B;AAMjC,MAAI,QAAQ,aAAa,SAAS;AAChC,QAAK,aAAa;AAClB,QAAK,YAAY;;AAGnB,OAAK,aAAa;AAClB,OAAK,iBAAiB;AACtB,OAAK,WAAW;AAChB,OAAK,WAAW;AAChB,OAAK,UAAU;AACf,OAAK,YAAY;AACjB,OAAK,aAAa;AAClB,OAAK,YAAY;AACjB,OAAK,UAAU;EAGf,MAAM,OAAO,QAAQ,WAAW;AAChC,OAAK,eAAe,OAAO,SAAS;AACpC,OAAK,gBAAgB,OAAO,QAAQ;AACpC,OAAK,eAAe,KAAK;EAGzB,MAAM,OAAO,QAAQ,SAAS,QAAQ,aAAa,UAAU,MAAM;AACnE,OAAK,aAAa,OAAO,SAAS,OAAO,KAAK,EAAE,GAAG;AACnD,OAAK,YAAY,KAAK;;CAGxB,aAAmB;AACjB,SAAO;;CAGT,eAAqB;AACnB,SAAO;;CAGT,SAAe;AACb,SAAO;;CAGT,MAAY;AACV,SAAO;;CAGT,QAAc;AACZ,SAAO;;CAGT,QAAiB;AACf,SAAO;;CAGT,UAA6D;AAC3D,SAAO;GACL,MAAM,KAAK;GACX,QAAQ,KAAK;GACb,SAAS,KAAK;GACf;;CAGH,WAAW,WAAmB,UAA6B;AACzD,OAAK,UAAU;AACf,MAAI,SACF,MAAK,KAAK,WAAW,SAAS;AAEhC,SAAO;;;;;;;CAQT,WAAW,SAAuB;AAChC,MAAI,KAAK,WAAW,UAAU,KAAK,QACjC,MAAK,KAAK,UAAU;;CAIxB,qBAA6B;EAC3B,MAAM,eAAe,oBAAoB,iBAAiB;AAC1D,SAAO,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,aAAa,SAAS,EAAE,UAAU,CAAC,CAAC,SAC5E,SACD;;;;;;CAOH,QAAQ,KAAmB;AACzB,MAAI,KAAK,UACP,QAAO;AAGT,OAAK,YAAY;AACjB,OAAK,WAAW;AAChB,OAAK,WAAW;AAChB,OAAK,mBAAmB;AACxB,OAAK,gBAAgB;AAErB,UAAQ,eAAe;AACrB,OAAI,KAAK;AACP,SAAK,YAAY;AACjB,SAAK,KAAK,SAAS,IAAI;;AAEzB,QAAK,KAAK,QAAQ;IAClB;AAEF,SAAO;;;;;;AClJX,IAAa,gBAAb,MAA2B;CAIzB,OAAO,UAAU,EACf,SACA,KACA,SAKO;AACP,OAAK,QAAQ,IAAI,SAAS;GACxB,GAAI,KAAK,QAAQ,IAAI,QAAQ,IAAI,EAAE;IAClC,MAAM;GACR,CAAC;;CAGJ,OAAO,WAAW,SAAiB,SAAmD;AACpF,OAAK,QAAQ,IAAI,SAAS,QAAQ;;CAGpC,OAAO,UAAU,SAAiB,KAAiC;AACjE,SAAO,KAAK,QAAQ,IAAI,QAAQ,GAAG;;CAGrC,OAAO,WAAW,SAAiE;AACjF,SAAO,KAAK,QAAQ,IAAI,QAAQ;;CAGlC,OAAO,aAAa,SAAuB;AACzC,OAAK,QAAQ,OAAO,QAAQ;;;cA9Bf,0BAAU,IAAI,KAAiD;;;;;;;;ACKhF,IAAa,cAAb,MAAyB;;;;CAMvB,OAAO,sBAAsB,SAAiB,WAAkC;EAC9E,MAAM,OAAO,IAAI,KAAK,UAAU;AAChC,OAAK,uBAAuB,IAAI,SAAS,KAAK;AAC9C,SAAO,MAAM,sCAAsC,QAAQ,IAAI,KAAK,aAAa,GAAG;;;;;CAMtF,OAAO,4BAAyC;EAC9C,MAAM,gBAAgB,UAAU,yBAAyB;AACzD,MAAI,CAAC,cACH,QAAO;AAGT,SAAO,KAAK,uBAAuB,IAAI,cAAc,IAAI;;;;;CAM3D,OAAO,WAAW,SAAuB;AACvC,OAAK,uBAAuB,OAAO,QAAQ;;;;;CAM7C,OAAO,WAAiB;AACtB,OAAK,uBAAuB,OAAO;;;YAlCtB,yCAAyB,IAAI,KAAmB;;;;ACEjE,MAAM,4BAA4B;EAC/B,SAAS,eAAe;EACxB,cAAc,eAAe;EAC7B,WAAW,eAAe;EAC1B,WAAW,eAAe;EAC1B,WAAW,eAAe;EAC1B,YAAY,eAAe;EAC3B,SAAS,eAAe;EACxB,WAAW,eAAe;EAC1B,UAAU,eAAe;EACzB,aAAa,eAAe;EAC5B,WAAW,eAAe;EAC1B,QAAQ,eAAe;EACvB,WAAW,eAAe;EAC1B,SAAS,eAAe;EACxB,cAAc,eAAe;EAC7B,eAAe,eAAe;EAC9B,sBAAsB,eAAe;EACrC,eAAe,eAAe;EAC9B,gBAAgB,eAAe;EAC/B,eAAe,eAAe;EAC9B,gBAAgB,eAAe;EAC/B,iBAAiB,eAAe;EAChC,iBAAiB,eAAe;EAChC,aAAa,eAAe;EAC5B,gBAAgB,eAAe;EAC/B,WAAW,eAAe;EAC1B,WAAW,eAAe;EAC1B,QAAQ,eAAe;EACvB,UAAU,eAAe;EACzB,cAAc,eAAe;CAC/B;;;;AAkBD,IAAa,mBAAb,MAAa,iBAAiB;;;;CAI5B,OAAO,gBAAgB,OAA4B;AACjD,MAAI,UAAU,KACZ,QAAO,0BAA0B;AAGnC,MAAI,UAAU,OACZ,QAAO,0BAA0B;EAGnC,MAAM,gBAAgB,OAAO;AAE7B,MAAI,kBAAkB,UAAU;GAE9B,MAAM,aAAa,OAAO,UAAU,SAAS,KAAK,MAAM,CAAC,MAAM,GAAG,GAAG;AAErE,OAAI,eAAe,QACjB,QAAO,0BAA0B;AAGnC,OAAI,eAAe,OACjB,QAAO,0BAA0B;AAGnC,OAAI,eAAe,SACjB,QAAO,0BAA0B;AAGnC,OAAI,eAAe,QACjB,QAAO,0BAA0B;AAGnC,OAAI,eAAe,MACjB,QAAO,0BAA0B;AAGnC,OAAI,eAAe,MACjB,QAAO,0BAA0B;AAInC,OAAI,eAAe,YAAa,QAAO,0BAA0B;AACjE,OAAI,eAAe,aAAc,QAAO,0BAA0B;AAClE,OAAI,eAAe,oBAAqB,QAAO,0BAA0B;AACzE,OAAI,eAAe,aAAc,QAAO,0BAA0B;AAClE,OAAI,eAAe,cAAe,QAAO,0BAA0B;AACnE,OAAI,eAAe,aAAc,QAAO,0BAA0B;AAClE,OAAI,eAAe,cAAe,QAAO,0BAA0B;AACnE,OAAI,eAAe,eAAgB,QAAO,0BAA0B;AACpE,OAAI,eAAe,eAAgB,QAAO,0BAA0B;AACpE,OAAI,eAAe,WAAY,QAAO,0BAA0B;AAChE,OAAI,eAAe,cAAe,QAAO,0BAA0B;AAEnE,OAAI,eAAe,YACjB,QAAO,0BAA0B;AAInC,UAAO,0BAA0B;;AAGnC,MAAI,kBAAkB,SACpB,QAAO,0BAA0B;AAGnC,MAAI,kBAAkB,SACpB,QAAO,0BAA0B;AAGnC,MAAI,kBAAkB,SACpB,QAAO,0BAA0B;AAGnC,MAAI,kBAAkB,UACpB,QAAO,0BAA0B;AAGnC,MAAI,kBAAkB,WACpB,QAAO,0BAA0B;AAGnC,MAAI,kBAAkB,SACpB,QAAO,0BAA0B;AAInC,SAAO,0BAA0B;;;;;;CAOnC,OAAe,sBACb,iBACA,QACY;EACZ,MAAMC,SAAqB,EAAE,GAAG,iBAAiB;AAGjD,SAAO,KAAK,OAAO,CAAC,SAAS,QAAQ;AACnC,GAAC,OAAe,OAAQ,OAAe;IACvC;AAEF,SAAO;;;;;;;;CAST,OAAO,eAAe,MAAW,cAAyC;AACxE,MAAI,SAAS,KACX,QAAO;GAAE,MAAM,0BAA0B;GAAS,YAAY,EAAE;GAAE;AAGpE,MAAI,SAAS,OACX,QAAO;GAAE,MAAM,0BAA0B;GAAc,YAAY,EAAE;GAAE;EAGzE,MAAM,eAAe,iBAAiB,gBAAgB,KAAK;AAE3D,MAAI,iBAAiB,eAAe,cAAc;AAChD,OAAI,MAAM,QAAQ,KAAK,IAAI,KAAK,WAAW,EACzC,QAAO;IAAE,MAAM,eAAe;IAAc,YAAY,EAAE;IAAE;GAE9D,MAAM,QACJ,MAAM,QAAQ,KAAK,IAAI,KAAK,SAAS,IACjC,iBAAiB,eAAe,KAAK,GAAG,GACxC;AACN,OAAI,UAAU,OACZ,QAAO;IACL,MAAM,eAAe;IACrB;IACA,YAAY,EAAE;IACf;AAEH,UAAO;IAAE,MAAM,eAAe;IAAc,YAAY,EAAE;IAAE;;AAG9D,MAAI,iBAAiB,eAAe,gBAAgB;AAElD,OAAI,gBAAgB,KAAK;IACvB,MAAM,YAAY,KAAK,OAAO,IAAI,KAAK,QAAQ,CAAC,MAAM,CAAC,QAAQ;AAC/D,QAAI,cAAc,KAChB,QAAO;KACL,MAAM,eAAe;KACrB,OAAO,iBAAiB,eAAe,UAAU;KACjD,YAAY,EAAE;KACf;;AAGL,UAAO;IAAE,MAAM,eAAe;IAAgB,YAAY,EAAE;IAAE;;AAGhE,MAAI,iBAAiB,eAAe,QAAQ;GAC1C,MAAMC,SAAqB;IAAE,MAAM,eAAe;IAAQ,YAAY,EAAE;IAAE;AAG1E,OAAI,gBAAgB,IAClB,MAAK,SAAS,OAAO,QAAQ;IAC3B,MAAM,YAAY,OAAO,IAAI;IAC7B,MAAM,kBAAkB,iBAAiB,eAAe,MAAM;AAG9D,QAAI,gBAAgB,aAAa,WAC/B,QAAO,WAAW,aAAa,iBAAiB,sBAC9C,iBACA,aAAa,WACd;QAED,QAAO,WAAW,aAAa;KAEjC;YACO,OAAO,SAAS,SACzB,QAAO,KAAK,KAAK,CAAC,SAAS,QAAQ;IACjC,MAAM,kBAAkB,iBAAiB,eAAe,KAAK,KAAK;AAGlE,QAAI,gBAAgB,aAAa,KAC/B,QAAO,WAAW,OAAO,iBAAiB,sBACxC,iBACA,aAAa,KACd;QAED,QAAO,WAAW,OAAO;KAE3B;AAGJ,UAAO;;AAIT,SAAO;GAAE,MAAM;GAAc,YAAY,EAAE;GAAE;;;;;CAM/C,OAAO,0BAA0B,MAAmB;EAElD,MAAM,aAAa,iBAAiB,0BAA0B,KAAK;EACnE,MAAM,aAAa,KAAK,UAAU,WAAW;AAC7C,SAAO,OAAO,WAAW,SAAS,CAAC,OAAO,WAAW,CAAC,OAAO,MAAM;;;;;CAMrE,OAAO,0BAA0B,KAAe;AAC9C,MAAI,QAAQ,QAAQ,QAAQ,OAC1B,QAAO;AAGT,MAAI,MAAM,QAAQ,IAAI,CACpB,QAAO,IAAI,KAAK,SAAS,iBAAiB,0BAA0B,KAAK,CAAC;AAG5E,MAAI,OAAO,QAAQ,UAAU;GAC3B,MAAMC,YAAiB,EAAE;AACzB,UAAO,KAAK,IAAI,CACb,MAAM,CACN,SAAS,QAAQ;AAChB,cAAU,OAAO,iBAAiB,0BAA0B,IAAI,KAAK;KACrE;AACJ,UAAO;;AAGT,SAAO;;;;;CAMT,OAAe,qBAAqB,MAAW,cAAkC;AAC/E,MAAI,CAAC,aACH,QAAO;EAGT,MAAM,cAAc,EAAE,GAAG,MAAM;AAG/B,OAAK,MAAM,CAAC,KAAK,WAAW,OAAO,QAAQ,aAAa,CACtD,KAAI,OAAO,YAAY,OAAO,eAAe,KAAK,SAAS,OACzD,KAAI;GACF,IAAI,eAAe,KAAK;AAGxB,OAAI,OAAO,aAAa,aAAa,UAAU,OAAO,iBAAiB,SAErE,gBADe,OAAO,KAAK,cAAc,SAAS,CAC5B,SAAS,OAAO;AAIxC,OAAI,OAAO,gBAAgB,YAAY,QAAQ,OAAO,iBAAiB,SACrE,gBAAe,KAAK,MAAM,aAAa;AAGzC,eAAY,OAAO;WACZ,OAAO;AACd,UAAO,MAAM,uCAAuC,IAAI,IAAI,MAAM;AAElE,eAAY,OAAO,KAAK;;AAK9B,SAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCT,OAAO,sBACL,MACA,cAKA;EAGA,MAAM,iBAAiB,KAAK,MAAM,KAAK,UAAU,KAAK,CAAC;EAGvD,MAAM,cAAc,iBAAiB,qBAAqB,gBAAgB,aAAa;EAGvF,MAAM,SAAS,iBAAiB,eAAe,aAAa,aAAa;AAMzE,SAAO;GAAE;GAAQ,kBAHQ,iBAAiB,0BAA0B,YAAY;GAG7C,mBAFT,iBAAiB,0BAA0B,OAAO;GAEtB;;;;;CAMxD,OAAO,iBAAmD;AACxD,SAAO;;;;;;ACzXX,SAAS,sCACP,iBACA,WACA,wBACe;CACf,MAAM,EACJ,QAAQ,aACR,kBAAkB,gBAClB,mBAAmB,oBACjB,iBAAiB,sBAAsB,gBAAgB,YAAY,uBAAuB;CAG9F,MAAM,eAAe,oBAAoB,iBAAiB;AAE1D,QAAO;EACL,GAAG;EACH,cAAc;EACd;EACA;EACA;EACA,aAAa;EACb,cAAc;EACd,kBAAkB;EAClB,iBAAiB;EACjB,WAAW;GACT,SAAS,KAAK,MAAM,aAAa,SAAS,GAAG,IAAK;GAClD,OAAQ,aAAa,SAAS,GAAG,MAAQ;GAC1C;EACD,UAAU;GACR,SAAS;GACT,OAAO;GACR;EACD,YAAY;EACZ,eAAe,CAAC,UAAU,YAAY;EACtC,UAAU;EACV,QAAQ;GACN,MAAM,WAAW;GACjB,SAAS;GACV;EACD,YAAY,gBAAgB;EAC7B;;;;;;;;;;;;;;AAeH,eAAsB,sBAAsB,EAC1C,iBACA,WACA,0BAK+B;CAC/B,MAAM,eAAe,sCACnB,iBACA,WACA,uBACD;AACD,KAAI;EAEF,MAAM,gBAAgB,UAAU,yBAAyB;AAEzD,SAAO,MAAM,WAAW,aAAa,QAAQ,6BAA6B,gBAAgB;EAE1F,MAAM,eAAe,MAAM,UAAU,iBAAiB;GACpD;GAEA,QAAQ,iBAAiB;GAC1B,CAAC;AAEF,MAAI,CAAC,gBAAgB,CAAC,aAAa,OAAO;AACxC,UAAO,MACL,8BAA8B,aAAa,QAAQ,qBAAqB,KAAK,UAC3E,aAAa,WACd,IACD,cACD;AACD,UAAO;;EAGT,MAAM,eAAgB,aAAa,UAAkB,UAAU;AAC/D,SAAO,MAAM,SAAS,aAAa,QAAQ,kBAAkB,cAAc,EACzE,WAAY,aAAa,UAAkB,WAC5C,CAAC;AAGF,MAAK,aAAa,UAAkB,UAClC,aAAY,sBACV,iBAAiB,IAChB,aAAa,SAAiB,UAChC;AAGH,SAAO,EACL,QAAQ,cACT;UACM,OAAO;AACd,SAAO,MAAM,iBAAiB,aAAa,QAAQ,kBAAkB,MAAM;AAC3E,SAAO;;;AAIX,SAAgB,qBAAqB,EACnC,iBACA,WACA,0BAKsB;CACtB,MAAM,eAAe,sCACnB,iBACA,WACA,uBACD;AACD,KAAI;EAEF,MAAM,gBAAgB,UAAU,yBAAyB;AAEzD,SAAO,MAAM,WAAW,aAAa,QAAQ,6BAA6B,gBAAgB;EAE1F,MAAM,eAAe,UAAU,gBAAgB;GAC7C;GACA,QAAQ,iBAAiB;GAC1B,CAAC;AAEF,MAAI,CAAC,gBAAgB,CAAC,aAAa,OAAO;AACxC,UAAO,MACL,8BAA8B,aAAa,QAAQ,qBAAqB,KAAK,UAC3E,aAAa,WACd,IACD,cACD;AACD,UAAO;;EAGT,MAAM,eAAgB,aAAa,UAAkB,UAAU;AAC/D,SAAO,MAAM,SAAS,aAAa,QAAQ,gCAAgC,cAAc,EACvF,WAAY,aAAa,UAAkB,WAC5C,CAAC;AAGF,MAAK,aAAa,UAAkB,UAClC,aAAY,sBACV,iBAAiB,IAChB,aAAa,SAAiB,UAChC;AAGH,SAAO,EACL,QAAQ,cACT;UACM,OAAO;AACd,SAAO,MAAM,iBAAiB,aAAa,QAAQ,kBAAkB,MAAM;AAC3E,SAAO;;;;;;;AC/KX,IAAIC;;;;AAoBJ,IAAa,sBAAb,MAAa,4BAA4BC,oBAAa;CAmBpD,YACE,SACA,UACA,UACA,YACA;AACA,SAAO;OAxBQ,uBAAuB;OAQjC,WAAoB;OAKnB,qBAA+B,EAAE;OACjC,kBAA2B;OAC3B,oCAA6C;OAC7C,UAA+B,EAAE;AASvC,sBAAoB,iBAAiB;AACrC,OAAK,YAAY,cAAc,aAAa;AAE5C,OAAK,WAAW;AAChB,OAAK,aAAa;AAElB,MAAI,CAAC,WAAW,OAAO,KAAK,QAAQ,CAAC,WAAW,EAC9C,OAAM,IAAI,MACR,gFACD;AAGH,OAAK,UAAU;GACb,GAAG;GACH,SAAS,iBAAiB,QAAQ,WAAW,EAAE,CAAC;GACjD;AAGD,MAAI,SACF,MAAK,KAAK,YAAY,SAAS;AAIjC,OAAK,SAAS,IAAI,iBAAiB;GACjC,UAAU,QAAQ,YAAY;GAC9B,QAAQ,QAAQ,UAAU;GAC1B,MAAM,QAAQ,QAAQ;GACtB,UAAU,QAAQ,YAAY;GAC/B,CAAC;EAGF,MAAM,UAAU,QAAQ,WAAW,QAAQ,OAAO,SAAS;AAC3D,MAAI,QACF,MAAK,OAAO,WAAW,QAAQ;AAIjC,OAAK,WAAW,IAAIC,qBAAgB,KAAK,OAAc;AACvD,OAAK,aAAa,KAAK;AAEvB,OAAK,eAAe;AAGpB,UAAQ,SAAS,YAAY;AAC3B,SAAM,KAAK,eAAe;IAC1B;;CAGJ,AAAQ,gBAAsB;EAC5B,MAAM,EAAE,YAAY;AAGpB,OAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,QAAQ,WAAW,EAAE,CAAC,CAG/D,MAAK,UAAU,KAAK,aAAa,EAAE,MAAM;AAI3C,MAAI,QAAQ,QAAQ,CAAC,QAAQ,SAAS,cACpC,MAAK,UAAU,iBAAiB,SAAS,OAAO,KAAK,QAAQ,KAAK,CAAC,SAAS,SAAS,GAAG;AAI1F,OAAK,OAAO,QAAQ,QAAQ;AAC5B,OAAK,SAAS,QAAQ,UAAU;AAGhC,MAAI,QAAQ,SAAS,WAAW,eAC9B,oBAAmB;AACjB,QAAK,KAAK,WAAW;IACrB;;CAIN,MAAc,gBAA+B;AAC3C,MAAI,KAAK,aAAa,CACpB;AAGF,OAAK,aAAa,KAAK;AAGvB,OAAK,gBAAgB,CAAC,SAAS,UAAU,EAAE,KAAK,QAAQ,KAAK;AAE7D,OAAK,OAAO,GAAG,eAAe;AAC5B,QAAK,eAAe;IACpB;AAEF,OAAK,OAAO,aAAa;AACzB,OAAK,KAAK,UAAU,KAAK,OAAO;AAChC,OAAK,OAAO,KAAK,UAAU;AAE3B,MAAI,KAAK,OAAO,WACd,MAAK,OAAO,KAAK,gBAAgB;AAGnC,MAAI,KAAK,kCACP,OAAM,KAAK,oBAAoB;;CAInC,AAAQ,gBAAgB,UAAkB,QAAsB,QAA4B;AAC1F,OAAK,MAAM,SAASC,SAClB,QAAO,GAAG,QAAQ,GAAG,SAAS,OAAO,KAAK,OAAO,GAAG,KAAK,CAAC;;CAI9D,AAAQ,gBAAsB;AAC5B,MAAI,EAAE,KAAK,OAAO,KAAK,OAAO,YAAY;AACxC,QAAK,OAAO,YAAY;GACxB,MAAM,sBAAM,IAAI,MAAM,iBAAiB;AACvC,OAAI,OAAO;AACX,QAAK,KAAK,SAAS,IAAI;;AAEzB,OAAK,KAAK,QAAQ;;CAGpB,MAAc,qBAAoC;AAChD,MAAI,KAAK,OAAO,YAAY;AAC1B,QAAK,oCAAoC;AACzC;;AAGF,MAAI,EAAE,KAAK,aAAa,IAAI,KAAK,iBAC/B,OAAM,KAAK,eAAe;;CAI9B,AAAQ,cAAuB;AAC7B,SAAQ,KAAa,aAAa,KAAK,OAAO;;CAGhD,AAAO,MAAM,OAAa,UAAgB,UAAyB;AACjE,MAAI,KAAK,UAAU;GACjB,MAAM,sBAAM,IAAI,MAAM,kBAAkB;AACxC,OAAI,OAAO;AACX,WAAQ,eAAe,KAAK,KAAK,SAAS,IAAI,CAAC;AAC/C,UAAO;;AAGT,MAAI,KAAK,QAAQ,UACf,QAAO;AAGT,MAAI,CAAC,MACH,QAAO;AAGT,MAAI,CAAC,OAAO,SAAS,MAAM,CACzB,SAAQ,OAAO,KAAK,OAAO,SAAS;AAGtC,OAAK,mBAAmB,KAAK,MAAM;EAGnC,MAAM,KAAK,OAAO,aAAa,aAAa,WAAW;AACvD,MAAI,OAAO,OAAO,WAChB,KAAI;AAGN,qBAAmB;AACjB,QAAK,KAAK,QAAQ;IAClB;AAEF,SAAO;;CAGT,AAAO,IAAI,OAAa,UAAgB,UAAsB;AAE5D,MAAI,KAAK,SACP,QAAO;EAGT,IAAI,KAAK;AACT,MAAI,OAAO,UAAU,YAAY;AAC/B,QAAK;AACL,WAAQ;aACC,OAAO,aAAa,YAAY;AACzC,QAAK;AACL,cAAW;;AAGb,MAAI,OAAO,OAAO,WAChB,MAAK,KAAK,UAAU,GAAG;AAGzB,MAAI,MACF,MAAK,MAAM,OAAO,SAAS;AAG7B,OAAK,WAAW;AAEhB,UAAQ,SAAS,YAAY;AAC3B,SAAM,KAAK,oBAAoB;IAC/B;AAEF,SAAO;;CAGT,AAAO,eAAqB;AAC1B,UAAQ,SAAS,YAAY;AAC3B,SAAM,KAAK,oBAAoB;IAC/B;;CAGJ,MAAc,gBAA+B;AAC3C,OAAK,kBAAkB;AAEvB,MAAI;AAEF,OAAI,CAAC,KAAK,UAAU;AAClB,WAAO,MACL,wGACD;IAED,MAAMC,gBAAuC;KAC3C,YAAY;KACZ,eAAe;KACf,SAAS,EAAE;KACX,aAAa;KACb,kBAAkB;KAClB,kBAAkB;KAClB,UAAU;KACV,UAAU;KACX;AAED,SAAK,KAAK,SAAS;AAGnB,YAAQ,eAAe;AACrB,UAAK,aAAa,cAAc;MAChC;AACF;;GAIF,MAAMC,gBAAsC;IAC1C,QAAQ,KAAK,UAAU;IACvB,MAAM,KAAK;IACX,SAAS,KAAK;IACd,UAAU,KAAK,QAAQ,YAAY;IACnC,UAAU,KAAK,QAAQ;IACvB,MAAM,KAAK,QAAQ,QAAQ;IAC3B,SAAS,KAAK,QAAQ,WAAW;IAClC;AAED,OAAI,KAAK,mBAAmB,SAAS,GAAG;IACtC,MAAM,aAAa,OAAO,OACxB,KAAK,mBAAmB,KAAK,UAC3B,OAAO,SAAS,MAAM,GAAG,QAAQ,OAAO,KAAK,MAAM,CACpD,CACF;AAMD,kBAAc,OAJM,MAAM,gBAAgB,EACxC,YACD,CAAC;AAGF,kBAAc,WAAW,WAAW;;GAGtC,MAAM,aAAa,qBAAqB,cAAc;GACtD,MAAM,WAAW,MAAM,sBAAsB;IAC3C,iBAAiB;KACf,SAAS,KAAK,SAAS;KACvB,QAAQ,KAAK,SAAS;KACtB,MACE,cAAc,QAAQ,GAAG,cAAc,SAAS,aAAa,CAAC,GAAG,cAAc;KACjF,aAAa,cAAc;KAC3B,aAAa,YAAY;KACzB,qBAAqB,KAAK;KAC1B,eAAe,cAAc;KAC7B;KACA,MAAMC,uBAAS;KACf,YAAY,KAAK;KAClB;IACD,WAAW,KAAK;IAChB,wBAAwB;KACtB,MAAM;MACJ,UAAU,aAAa;MACvB,aAAa,eACV,cAAc,QAAQ,mBAAyC,GACjE;MACF;KACD,SAAS,EACP,iBAAiB,GAClB;KACF;IACF,CAAC;AACF,OAAI,CAAC,UAAU;AACb,WAAO,KAAK,gDAAgD,KAAK,OAAO,GAAG,KAAK,OAAO;AACvF,UAAM,IAAI,MACR,oDAAoD,KAAK,OAAO,GAAG,KAAK,OACzE;;AAGH,QAAK,KAAK,SAAS;AAGnB,WAAQ,eAAe;AAErB,SAAK,aAAa,SAAS,OAAgC;KAC3D;WACK,OAAO;AACd,UAAO,MAAM,gDAAgD,MAAM;AACnE,QAAK,KAAK,SAAS,MAAM;;;CAI7B,AAAQ,aAAa,gBAA6C;AAChE,SAAO,MAAM,qDAAqD,eAAe;AACjF,MAAI;AAEF,OAAI,eAAe,WAAW;AAC5B,WAAO,MAAM,sEAAsE;IAGnF,MAAM,QAAQ,IAAI,MAAM,eAAe,aAAa;AAGpD,YAAQ,eAAe;AACrB,UAAK,KAAK,SAAS,MAAM;MACzB;AACF;;AAIF,QAAK,SAAS,aAAa,eAAe,cAAc;AACxD,QAAK,SAAS,gBAAgB,eAAe,iBAAiB;GAI9D,MAAM,kBAAkB,EAAE,GADV,iBAAiB,eAAe,WAAW,EAAE,CAAC,EACxB;AAMtC,GAH2B,OAAO,KAAK,gBAAgB,CAAC,QAAQ,QAC9D,IAAI,aAAa,CAAC,SAAS,mBAAmB,CAC/C,CACkB,SAAS,WAAW;AACrC,WAAO,gBAAgB;KACvB;AAEF,QAAK,SAAS,UAAU;AACxB,QAAK,SAAS,aAAa,EAAE;AAG7B,QAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,gBAAgB,CACxD,MAAK,SAAS,WAAW,KAAK,KAAK,OAAO,MAAM,CAAC;AAInD,QAAK,SAAS,cAAc,eAAe,eAAe;AAC1D,QAAK,SAAS,mBAAmB,eAAe,oBAAoB;AACpE,QAAK,SAAS,mBAAmB,eAAe,oBAAoB;AACpE,QAAK,SAAS,WAAW;AACzB,QAAK,SAAS,WAAW;AAGzB,GAAC,KAAK,SAAiB,aAAa,SAAiB;AACnD,WAAO,KAAK,SAAS,UAAU,KAAK,aAAa;;AAGnD,GAAC,KAAK,SAAiB,mBAAmB;AACxC,WAAO,KAAK,SAAS,WAAW,EAAE;;AAGpC,GAAC,KAAK,SAAiB,aAAa,SAAiB;AACnD,WAAO,QAAQ,KAAK,SAAS,UAAU,KAAK,aAAa,EAAE;;AAG7D,QAAK,MAAM,KAAK;AAChB,GAAC,KAAK,SAAiB,MAAM;AAG7B,QAAK,KAAK,YAAY,KAAK,SAAS;AAGpC,WAAQ,SAAS,YAAY;AAC3B,UAAM,KAAK,iBAAiB,eAAe;KAC3C;WACK,OAAO;AACd,UAAO,MAAM,iDAAiD,MAAM;AACpE,QAAK,KAAK,SAAS,MAAM;;;CAI7B,MAAc,iBAAiB,aAAmD;AAChF,MAAI,CAAC,YAAY,MAAM;AAErB,QAAK,SAAS,KAAK,KAAK;AACxB,QAAK,SAAS,WAAW;AACzB,QAAK,SAAS,WAAW;AACzB;;AAGF,MAAI;GACF,MAAM,aAAa,OAAO,KAAK,YAAY,MAAM,SAAS;AAG1D,QAAK,SAAS,KAAK,WAAW;WACvB,OAAO;AACd,UAAO,MAAM,yDAAyD,MAAM;AAC5E,QAAK,SAAS,KAAK,KAAK;;AAI1B,OAAK,SAAS,KAAK,KAAK;AACxB,OAAK,SAAS,WAAW;AACzB,OAAK,SAAS,WAAW;;CAG3B,AAAO,UAAU,MAAc,OAAkB;AAC/C,OAAK,QAAQ,KAAK,aAAa,IAAI;;CAGrC,AAAO,UAAU,MAAmB;AAClC,SAAO,KAAK,QAAQ,KAAK,aAAa;;CAGxC,AAAO,aAAa,MAAoB;AACtC,SAAO,KAAK,QAAQ,KAAK,aAAa;;CAGxC,AAAO,aAAkC;AACvC,SAAO,EAAE,GAAG,KAAK,SAAS;;CAG5B,AAAO,QAAc;AACnB,SAAO,MAAM,wCAAwC;AACrD,OAAK,KAAK,QAAQ;AAClB,OAAK,OAAO,SAAS;;CAGvB,AAAO,WAAW,SAAiB,UAA6B;AAC9D,MAAI,SACF,MAAK,KAAK,WAAW,SAAS;AAEhC,SAAO;;CAGT,AAAO,QAAQ,OAAqB;AAClC,SAAO,MAAM,2CAA2C,MAAM;AAC9D,MAAI,MACF,MAAK,KAAK,SAAS,MAAM;AAE3B,OAAK,KAAK,QAAQ;AAClB,OAAK,OAAO,SAAS;AACrB,SAAO;;CAIT,OAAe,kBAAkB;AAC/B,MAAI,CAAC,eAAe;AAClB,mBAAgB,QAAQ,OAAO,CAAC;AAChC,UAAO,eAAe,oBAAoB,WAAW,cAAc,UAAU;;;CAKjF,OAAO,aAAa;AAClB,sBAAoB,iBAAiB;;;;;;;;;AC/fzC,IAAa,kBAAb,MAA6B;;;;CAI3B,0BAA0B,KAAyB;EACjD,MAAM,gBAAgB,IAAI,QAAQ,oBAAoB,IAAI,QAAQ;AAClE,SAAO,gBAAgB,OAAO,cAAc,GAAG;;;;;CAMjD,0BAA0B,KAAmB;EAC3C,MAAM,cAAc,IAAI,QAAQ,0BAA0B,IAAI,QAAQ;AACtE,SAAO,gBAAgB,UAAU,gBAAgB;;;;;;CAOnD,4BAA4B,EAC1B,QACA,gBACA,UACA,MACA,UACA,cAQkC;AAClC,SAAO,MACL,uCAAuC,SAAS,aAAa,CAAC,GAAG,OAAO,yBACzE;EAGD,IAAIC;AACJ,MAAI,KAAK,SAAS,KAAK,OAAO,KAAK,OAAO,WACxC,YAAW,KAAK;WACP,KAAK,SAAS,KAAK,OAAO,KAAK,OAAO,WAC/C,YAAW,KAAK;AAGlB,SAAO,MAAM,4DAA4D;EAgBzE,MAAM,cAAc,IAAI,oBAbwB;GAC9C,MAAM,eAAe,QAAQ;GAC7B,SAAS,eAAe,WAAW,EAAE;GACrC,SAAS,eAAe,WAAW;GACnC,MAAM,eAAe,QAAQ;GAC7B,OAAO,eAAe,SAAS;GAC/B;GACA,UAAU,eAAe,YAAY,eAAe,QAAQ;GAC5D,MAAM,eAAe,OAAO,OAAO,eAAe,KAAK,GAAG;GAC1D;GACD,EAGwD,UAAU,UAAU,WAAW;AAIxF,MAAI,WAAW,SAAS,WAAW,OAEjC,SAAQ,eAAe;AACrB,eAAY,KAAK;IACjB;AAGJ,SAAO;;;;;;;;;;;;;;;;ACjEX,SAAgB,iBAAoB,EAClC,sBACA,mBACA,YAKI;CACJ,IAAI,aAAa;CACjB,IAAI,kBAAkB;AACtB,KAAI;AACF,eAAa,cAAc,aAAa,CAAC,YAAY;AACrD,oBAAkB,UAAU,oBAAoB;UACzC,OAAO;AACd,SAAO,MAAM,wEAAwE,MAAM;AAC3F,SAAO,sBAAsB;;AAG/B,KAAI,CAAC,WAEH,QAAO,kBAAkB,EAAE,eAAe,MAAM,CAAC;AAGnD,KAAK,CAAC,mBAAmB,aAAaC,uBAAS,UAAW,iBAAiB,cAGzE,QAAO,sBAAsB;KAG7B,QAAO,kBAAkB,EAAE,eAAe,OAAO,CAAC;;;;;;;;;;;AAatD,SAAgB,iBAAoB,EAClC,mBACA,oBACA,mBAKI;CACJ,MAAM,aAAa,cAAc,aAAa,CAAC,YAAY;CAC3D,MAAM,kBAAkB,UAAU,oBAAoB;AAGtD,KAAI,cAAc,CAAC,mBAAmB,CAAC,iBAAiB;AACtD,SAAO,MAAM,qCAAqC;AAElD,SAAO,oBAAoB;;AAG7B,QAAO,mBAAmB;;;;;;AC/E5B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,oBAAoB,QAAQ,mBAAmB,QAAQ,oBAAoB,QAAQ,sBAAsB,KAAK;CACtH,MAAMC;;;;CAIN,SAAS,oBAAoB,QAAQ,SAAS;EAC1C,IAAI,IAAI,IAAI;EACZ,IAAI,IAAI;AACR,IAAE,UAAU;AACZ,IAAE,aAAa,KAAK,EAAE,eAAe,QAAQ,OAAO,KAAK,IAAI,KAAKA,YAAU,eAAe,EAAE,KAAK;AAElG,IAAE,kBAAkB,CAAC,CAAC,EAAE;AAExB,IAAE,kBAAkB,CAAC,CAAC,EAAE;AACxB,IAAE,WAAW,KAAK,EAAE,aAAa,QAAQ,OAAO,KAAK,IAAI,KAAK,EAAE;AAChE,IAAE,eAAe,KAAK,EAAE,iBAAiB,QAAQ,OAAO,KAAK,IAAI,KAAK;AACtE,SAAO;;AAEX,SAAQ,sBAAsB;;;;;;CAM9B,SAAS,kBAAkB,SAAS,YAAY,eAAe,eAAe;EAC1E,IAAI;EACJ,MAAM,WAAW,KAAK,QAAQ,QAAQ,MAAM,GAAG,MAAM,EAAE,cAAc,cAAc,MAAM,WAAW,MAAM,QAAQ,OAAO,KAAK,IAAI,KAAK,IAAI,GAAG;AAC9I,SAAO,WAAW,QAAQ,iBAAiB,cAAc,SAAS,QAAQ,eAAe,GAAG;;AAEhG,SAAQ,oBAAoB;CAC5B,SAAS,iBAAiB,SAAS,YAAY,eAAe,eAAe;EACzE,IAAI;EACJ,MAAM,WAAW,KAAK,QAAQ,QAAQ,MAAM,GAAG,MAAM,EAAE,cAAc,cAAc,MAAM,WAAW,MAAM,QAAQ,OAAO,KAAK,IAAI,KAAK,IAAI,GAAG;AAC9I,MAAI,CAAC,QACD;EAEJ,MAAM,YAAY,QAAQ;AAC1B,MAAI,cAAc,OACd,QAAO;AAEX,SAAO,gBAAgB,cAAc,SAAS,UAAU,GAAG;;AAE/D,SAAQ,mBAAmB;CAC3B,SAAS,kBAAkB,SAAS,eAAe,eAAe;EAC9D,MAAM,UAAU,QAAQ;AACxB,MAAI,CAAC,QACD;EAEJ,MAAM,YAAY,QAAQ;AAC1B,MAAI,cAAc,OACd,QAAO;AAEX,SAAO,gBAAgB,cAAc,SAAS,UAAU,GAAG;;AAE/D,SAAQ,oBAAoB;;;;;;ACvD5B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,cAAc,KAAK;CAC3B,MAAMC;CACN,IAAMC,gBAAN,MAAkB;EACd,YAAY,UAAU,SAAS,SAAS;AACpC,QAAK,WAAW;AAChB,QAAK,UAAU,QAAQ,KAAI,MAAKD,oBAAkB,oBAAoB,GAAG,KAAK,CAAC;AAC/E,QAAK,UAAU,YAAY,QAAQ,YAAY,KAAK,IAAI,UAAU,EAAE;;;AAG5E,SAAQ,cAAcC;;;;;;ACVtB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,WAAW,KAAK;;;;CAIxB,IAAM,WAAN,cAAuB,MAAM;EACzB,YAAY,SAAS,OAAO,WAAW,MAAM;AACzC,SAAM,QAAQ;AACd,QAAK,OAAO;AAEZ,UAAO,eAAe,MAAM,IAAI,OAAO,UAAU;AACjD,QAAK,OAAO;AACZ,QAAK,OAAO,SAAS,QAAQ,SAAS,KAAK,IAAI,OAAO,EAAE;;EAE5D,WAAW;GACP,MAAM,IAAI,CAAC,KAAK,OAAO,OAAO,KAAK,QAAQ;AAC3C,OAAI,KAAK,MAAM;AACX,MAAE,KAAK,GAAG;AACV,MAAE,KAAK,WAAW,KAAK,KAAK;;AAEhC,OAAI,KAAK,eAAe,KAAK,WACzB,GAAE,KAAK,aAAa,KAAK,cAAc,MAAM,KAAK,WAAW;GAEjE,IAAI,IAAI,OAAO,QAAQ,KAAK,KAAK;AACjC,OAAI,EAAE,QAAQ;AACV,MAAE,KAAK,GAAG;AACV,MAAE,KAAK,QAAQ;AACf,SAAK,IAAI,CAAC,GAAG,MAAM,EACf,GAAE,KAAK,KAAK,EAAE,IAAI,IAAI;;AAG9B,UAAO,EAAE,KAAK,KAAK;;;AAG3B,SAAQ,WAAW;;;;;;AClCnB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,kBAAkB,KAAK;CAC/B,MAAMC;;;;;;;;;;;;;;;;;;;;;;CAsBN,SAAS,gBAAgB,UAAU,SAAS;AACxC,MAAI,CAAC,QACD,QAAO;EACX,IAAI,IAAI,EAAE;AACV,OAAK,UAAU,EAAE;AACjB,OAAK,SAAS,EAAE;AAChB,OAAK,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;GAClC,IAAI,MAAM,QAAQ;AAClB,WAAQ,KAAR;IACI,KAAK;AACD,OAAE,cAAcA,YAAU,iBAAiB,SAAS,aAAa,EAAE,YAAY;AAC/E;IACJ,KAAK;AACD,OAAE,gBAAgBA,YAAU,mBAAmB,SAAS,eAAe,EAAE,cAAc;AACvF;IACJ,KAAK;AACD,OAAE,OAAO,EAAE;AACX,UAAK,SAAS,MAAM,EAAE,KAAK;AAC3B,UAAK,QAAQ,MAAM,EAAE,KAAK;AAC1B;IACJ,KAAK;AACD,OAAE,eAAe,SAAS,eAAe,SAAS,aAAa,OAAO,IAAI,GAAG,IAAI,QAAQ;AACzF;;;AAGZ,SAAO;;AAEX,SAAQ,kBAAkB;CAC1B,SAAS,KAAK,GAAG,MAAM;AACnB,MAAI,CAAC,EACD;EACJ,IAAI,IAAI;AACR,OAAK,IAAI,CAAC,GAAG,MAAM,OAAO,QAAQ,EAAE,CAChC,KAAI,aAAa,KACb,GAAE,KAAK,IAAI,KAAK,EAAE,SAAS,CAAC;WACvB,MAAM,QAAQ,EAAE,CACrB,GAAE,KAAK,EAAE,QAAQ;MAEjB,GAAE,KAAK;;;;;;;AC9DnB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,WAAW,QAAQ,gBAAgB,KAAK;CAChD,IAAI;AACJ,EAAC,SAAU,iBAAe;AACtB,kBAAc,gBAAc,aAAa,KAAK;AAC9C,kBAAc,gBAAc,cAAc,KAAK;AAC/C,kBAAc,gBAAc,cAAc,KAAK;IAChD,gBAAgB,QAAQ,kBAAkB,QAAQ,gBAAgB,EAAE,EAAE;;;;;;;;;CASzE,IAAMC,aAAN,MAAe;;;;;;;;;;;;;EAaX,YAAY,mCAAmC,MAAM;AACjD,QAAK,SAAS,cAAc;AAC5B,QAAK,WAAW,IAAI,SAAS,SAAS,WAAW;AAC7C,SAAK,WAAW;AAChB,SAAK,UAAU;KACjB;AACF,OAAI,iCACA,MAAK,SAAS,OAAM,MAAK,GAAI;;;;;EAMrC,IAAI,QAAQ;AACR,UAAO,KAAK;;;;;EAKhB,IAAI,UAAU;AACV,UAAO,KAAK;;;;;EAKhB,QAAQ,OAAO;AACX,OAAI,KAAK,UAAU,cAAc,QAC7B,OAAM,IAAI,MAAM,kBAAkB,cAAc,KAAK,OAAO,aAAa,GAAG;AAChF,QAAK,SAAS,MAAM;AACpB,QAAK,SAAS,cAAc;;;;;EAKhC,OAAO,QAAQ;AACX,OAAI,KAAK,UAAU,cAAc,QAC7B,OAAM,IAAI,MAAM,iBAAiB,cAAc,KAAK,OAAO,aAAa,GAAG;AAC/E,QAAK,QAAQ,OAAO;AACpB,QAAK,SAAS,cAAc;;;;;EAKhC,eAAe,KAAK;AAChB,OAAI,KAAK,WAAW,cAAc,QAC9B,MAAK,QAAQ,IAAI;;;;;EAKzB,cAAc,QAAQ;AAClB,OAAI,KAAK,WAAW,cAAc,QAC9B,MAAK,OAAO,OAAO;;;AAG/B,SAAQ,WAAWA;;;;;;ACpFnB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,4BAA4B,KAAK;CACzC,MAAMC;CACN,MAAMC;;;;CAIN,IAAM,4BAAN,MAAgC;EAC5B,cAAc;AACV,QAAK,OAAO;IACR,KAAK,EAAE;IACP,KAAK,EAAE;IACP,KAAK,EAAE;IACP,KAAK,EAAE;IACV;AACD,QAAK,UAAU;AAIf,QAAK,WAAW,EAAE,GAAG,EAAE,EAAE;;EAG7B,OAAO,UAAU;AACb,UAAO,KAAK,OAAO,UAAU,KAAK,KAAK,IAAI;;EAE/C,UAAU,UAAU;AAChB,UAAO,KAAK,OAAO,UAAU,KAAK,KAAK,IAAI;;EAE/C,QAAQ,UAAU;AACd,UAAO,KAAK,OAAO,UAAU,KAAK,KAAK,IAAI;;EAE/C,WAAW,UAAU;AACjB,UAAO,KAAK,OAAO,UAAU,KAAK,KAAK,IAAI;;EAE/C,OAAO,UAAU,MAAM;AACnB,QAAK,KAAK,SAAS;AACnB,gBAAa;IACT,IAAI,IAAI,KAAK,QAAQ,SAAS;AAC9B,QAAI,KAAK,EACL,MAAK,OAAO,GAAG,EAAE;;;EAI7B,WAAW;AACP,QAAK,IAAI,KAAK,OAAO,OAAO,KAAK,KAAK,CAClC,GAAE,OAAO,GAAG,EAAE,OAAO;;;;;EAM7B,IAAI,SAAS;AACT,UAAO,KAAK,YAAY;;;;;;;EAO5B,WAAW,SAAS,OAAO,UAAU;AACjC,eAAU,QAAQ,UAAU,IAAI,MAAM,QAAQ,IAAI,MAAM,WAAW,IAAI,MAAM,GAAG,8BAA8B;AAC9G,OAAI,QACA,MAAK,cAAc,QAAQ;AAC/B,OAAI,MACA,MAAK,YAAY,MAAM;AAC3B,OAAI,SACA,MAAK,gBAAgB;;;;;;;EAO7B,cAAc,SAAS;AACnB,eAAU,OAAO,CAAC,KAAK,QAAQ,mBAAmB;AAClD,QAAK,OAAO;IAAE,OAAO;IAAS,MAAM;IAAO,CAAC;AAC5C,QAAK,KAAK,IAAI,SAAQ,MAAK,EAAE,QAAQ,CAAC;AACtC,QAAK,KAAK,IAAI,SAAQ,MAAK,EAAE,SAAS,QAAW,MAAM,CAAC;;;;;;;EAO5D,YAAY,OAAO;AACf,eAAU,OAAO,CAAC,KAAK,QAAQ,mBAAmB;AAClD,QAAK,UAAU;AACf,QAAK,OAAO,MAAM;AAClB,QAAK,KAAK,IAAI,SAAQ,MAAK,EAAE,MAAM,CAAC;AACpC,QAAK,KAAK,IAAI,SAAQ,MAAK,EAAE,QAAW,OAAO,MAAM,CAAC;AACtD,QAAK,UAAU;;;;;;;EAOnB,iBAAiB;AACb,eAAU,OAAO,CAAC,KAAK,QAAQ,mBAAmB;AAClD,QAAK,UAAU;AACf,QAAK,OAAO;IAAE,OAAO;IAAM,MAAM;IAAM,CAAC;AACxC,QAAK,KAAK,IAAI,SAAQ,MAAK,GAAG,CAAC;AAC/B,QAAK,KAAK,IAAI,SAAQ,MAAK,EAAE,QAAW,QAAW,KAAK,CAAC;AACzD,QAAK,UAAU;;;;;;;;;;;;;;;EAenB,CAAC,OAAO,iBAAiB;AAKrB,OAAI,KAAK,YAAY,KACjB,MAAK,OAAO;IAAE,OAAO;IAAM,MAAM;IAAM,CAAC;YACnC,KAAK,YAAY,MACtB,MAAK,OAAO,KAAK,QAAQ;AAE7B,UAAO,EACH,YAAY;IACR,IAAI,QAAQ,KAAK;AACjB,gBAAU,OAAO,OAAO,YAAY;AAGpC,gBAAU,OAAO,CAAC,MAAM,GAAG,2BAA2B;IAGtD,IAAI,QAAQ,MAAM,EAAE,OAAO;AAC3B,QAAI,MACA,QAAQ,WAAW,QAAS,QAAQ,QAAQ,MAAM,GAAG,QAAQ,OAAO,MAAM;AAG9E,UAAM,IAAI,IAAID,aAAW,UAAU;AACnC,WAAO,MAAM,EAAE;MAEtB;;EAIL,OAAO,QAAQ;GACX,IAAI,QAAQ,KAAK;AAEjB,OAAI,MAAM,GAAG;IAET,MAAM,IAAI,MAAM;AAChB,gBAAU,OAAO,EAAE,SAASA,aAAW,cAAc,SAAS,2BAA2B;AAEzF,IAAC,WAAW,SAAU,EAAE,QAAQ,OAAO,GAAG,EAAE,OAAO,OAAO;AAE1D,WAAO,MAAM;SAKb,OAAM,EAAE,KAAK,OAAO;;;AAIhC,SAAQ,4BAA4B;;;;;;CCxKpC,IAAIE,iCAA0B,aAAc,SAAU,SAAS,YAAY,GAAG,WAAW;EACrF,SAAS,MAAM,OAAO;AAAE,UAAO,iBAAiB,IAAI,QAAQ,IAAI,EAAE,SAAU,SAAS;AAAE,YAAQ,MAAM;KAAI;;AACzG,SAAO,KAAK,MAAM,IAAI,UAAU,SAAU,SAAS,QAAQ;GACvD,SAAS,UAAU,OAAO;AAAE,QAAI;AAAE,UAAK,UAAU,KAAK,MAAM,CAAC;aAAW,GAAG;AAAE,YAAO,EAAE;;;GACtF,SAAS,SAAS,OAAO;AAAE,QAAI;AAAE,UAAK,UAAU,SAAS,MAAM,CAAC;aAAW,GAAG;AAAE,YAAO,EAAE;;;GACzF,SAAS,KAAK,QAAQ;AAAE,WAAO,OAAO,QAAQ,OAAO,MAAM,GAAG,MAAM,OAAO,MAAM,CAAC,KAAK,WAAW,SAAS;;AAC3G,SAAM,YAAY,UAAU,MAAM,SAAS,cAAc,EAAE,CAAC,EAAE,MAAM,CAAC;IACvE;;AAEN,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,YAAY,KAAK;;;;;CAKzB,IAAM,YAAN,MAAgB;EACZ,YAAY,QAAQ,gBAAgB,SAAS,SAAS,UAAU,QAAQ,UAAU;AAC9E,QAAK,SAAS;AACd,QAAK,iBAAiB;AACtB,QAAK,UAAU;AACf,QAAK,UAAU;AACf,QAAK,WAAW;AAChB,QAAK,SAAS;AACd,QAAK,WAAW;;;;;;EAMpB,KAAK,aAAa,YAAY;AAC1B,UAAO,KAAK,iBAAiB,CAAC,MAAK,UAAS,cAAc,QAAQ,QAAQ,YAAY,MAAM,CAAC,GAAG,QAAO,WAAU,aAAa,QAAQ,QAAQ,WAAW,OAAO,CAAC,GAAG,QAAQ,OAAO,OAAO,CAAC;;EAE/L,kBAAkB;AACd,UAAOA,YAAU,MAAM,KAAK,GAAG,KAAK,GAAG,aAAa;IAChD,IAAI,CAAC,SAAS,UAAU,QAAQ,YAAY,MAAM,QAAQ,IAAI;KAAC,KAAK;KAAS,KAAK;KAAU,KAAK;KAAQ,KAAK;KAAS,CAAC;AACxH,WAAO;KACH,QAAQ,KAAK;KACb,gBAAgB,KAAK;KACrB,SAAS,KAAK;KACd;KACA;KACA;KACA;KACH;KACH;;;AAGV,SAAQ,YAAY;;;;;;CC/CpB,IAAIC,iCAA0B,aAAc,SAAU,SAAS,YAAY,GAAG,WAAW;EACrF,SAAS,MAAM,OAAO;AAAE,UAAO,iBAAiB,IAAI,QAAQ,IAAI,EAAE,SAAU,SAAS;AAAE,YAAQ,MAAM;KAAI;;AACzG,SAAO,KAAK,MAAM,IAAI,UAAU,SAAU,SAAS,QAAQ;GACvD,SAAS,UAAU,OAAO;AAAE,QAAI;AAAE,UAAK,UAAU,KAAK,MAAM,CAAC;aAAW,GAAG;AAAE,YAAO,EAAE;;;GACtF,SAAS,SAAS,OAAO;AAAE,QAAI;AAAE,UAAK,UAAU,SAAS,MAAM,CAAC;aAAW,GAAG;AAAE,YAAO,EAAE;;;GACzF,SAAS,KAAK,QAAQ;AAAE,WAAO,OAAO,QAAQ,OAAO,MAAM,GAAG,MAAM,OAAO,MAAM,CAAC,KAAK,WAAW,SAAS;;AAC3G,SAAM,YAAY,UAAU,MAAM,SAAS,cAAc,EAAE,CAAC,EAAE,MAAM,CAAC;IACvE;;AAEN,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,sBAAsB,KAAK;;;;;CAKnC,IAAM,sBAAN,MAA0B;EACtB,YAAY,QAAQ,gBAAgB,SAAS,SAAS,UAAU,QAAQ,UAAU;AAC9E,QAAK,SAAS;AACd,QAAK,iBAAiB;AACtB,QAAK,UAAU;AACf,QAAK,UAAU;AACf,QAAK,YAAY;AACjB,QAAK,SAAS;AACd,QAAK,WAAW;;;;;;;;EAQpB,KAAK,aAAa,YAAY;AAC1B,UAAO,KAAK,iBAAiB,CAAC,MAAK,UAAS,cAAc,QAAQ,QAAQ,YAAY,MAAM,CAAC,GAAG,QAAO,WAAU,aAAa,QAAQ,QAAQ,WAAW,OAAO,CAAC,GAAG,QAAQ,OAAO,OAAO,CAAC;;EAE/L,kBAAkB;AACd,UAAOA,YAAU,MAAM,KAAK,GAAG,KAAK,GAAG,aAAa;IAChD,IAAI,CAAC,SAAS,QAAQ,YAAY,MAAM,QAAQ,IAAI;KAAC,KAAK;KAAS,KAAK;KAAQ,KAAK;KAAS,CAAC;AAC/F,WAAO;KACH,QAAQ,KAAK;KACb,gBAAgB,KAAK;KACrB,SAAS,KAAK;KACd;KACA;KACA;KACH;KACH;;;AAGV,SAAQ,sBAAsB;;;;;;CChD9B,IAAIC,iCAA0B,aAAc,SAAU,SAAS,YAAY,GAAG,WAAW;EACrF,SAAS,MAAM,OAAO;AAAE,UAAO,iBAAiB,IAAI,QAAQ,IAAI,EAAE,SAAU,SAAS;AAAE,YAAQ,MAAM;KAAI;;AACzG,SAAO,KAAK,MAAM,IAAI,UAAU,SAAU,SAAS,QAAQ;GACvD,SAAS,UAAU,OAAO;AAAE,QAAI;AAAE,UAAK,UAAU,KAAK,MAAM,CAAC;aAAW,GAAG;AAAE,YAAO,EAAE;;;GACtF,SAAS,SAAS,OAAO;AAAE,QAAI;AAAE,UAAK,UAAU,SAAS,MAAM,CAAC;aAAW,GAAG;AAAE,YAAO,EAAE;;;GACzF,SAAS,KAAK,QAAQ;AAAE,WAAO,OAAO,QAAQ,OAAO,MAAM,GAAG,MAAM,OAAO,MAAM,CAAC,KAAK,WAAW,SAAS;;AAC3G,SAAM,YAAY,UAAU,MAAM,SAAS,cAAc,EAAE,CAAC,EAAE,MAAM,CAAC;IACvE;;AAEN,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,sBAAsB,KAAK;;;;;;CAMnC,IAAM,sBAAN,MAA0B;EACtB,YAAY,QAAQ,gBAAgB,SAAS,SAAS,UAAU,QAAQ,UAAU;AAC9E,QAAK,SAAS;AACd,QAAK,iBAAiB;AACtB,QAAK,WAAW;AAChB,QAAK,UAAU;AACf,QAAK,WAAW;AAChB,QAAK,SAAS;AACd,QAAK,WAAW;;;;;;;EAOpB,KAAK,aAAa,YAAY;AAC1B,UAAO,KAAK,iBAAiB,CAAC,MAAK,UAAS,cAAc,QAAQ,QAAQ,YAAY,MAAM,CAAC,GAAG,QAAO,WAAU,aAAa,QAAQ,QAAQ,WAAW,OAAO,CAAC,GAAG,QAAQ,OAAO,OAAO,CAAC;;EAE/L,kBAAkB;AACd,UAAOA,YAAU,MAAM,KAAK,GAAG,KAAK,GAAG,aAAa;IAChD,IAAI,CAAC,SAAS,UAAU,QAAQ,YAAY,MAAM,QAAQ,IAAI;KAAC,KAAK;KAAS,KAAK;KAAU,KAAK;KAAQ,KAAK;KAAS,CAAC;AACxH,WAAO;KACH,QAAQ,KAAK;KACb,gBAAgB,KAAK;KACrB;KACA;KACA;KACA;KACH;KACH;;;AAGV,SAAQ,sBAAsB;;;;;;CChD9B,IAAIC,iCAA0B,aAAc,SAAU,SAAS,YAAY,GAAG,WAAW;EACrF,SAAS,MAAM,OAAO;AAAE,UAAO,iBAAiB,IAAI,QAAQ,IAAI,EAAE,SAAU,SAAS;AAAE,YAAQ,MAAM;KAAI;;AACzG,SAAO,KAAK,MAAM,IAAI,UAAU,SAAU,SAAS,QAAQ;GACvD,SAAS,UAAU,OAAO;AAAE,QAAI;AAAE,UAAK,UAAU,KAAK,MAAM,CAAC;aAAW,GAAG;AAAE,YAAO,EAAE;;;GACtF,SAAS,SAAS,OAAO;AAAE,QAAI;AAAE,UAAK,UAAU,SAAS,MAAM,CAAC;aAAW,GAAG;AAAE,YAAO,EAAE;;;GACzF,SAAS,KAAK,QAAQ;AAAE,WAAO,OAAO,QAAQ,OAAO,MAAM,GAAG,MAAM,OAAO,MAAM,CAAC,KAAK,WAAW,SAAS;;AAC3G,SAAM,YAAY,UAAU,MAAM,SAAS,cAAc,EAAE,CAAC,EAAE,MAAM,CAAC;IACvE;;AAEN,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,sBAAsB,KAAK;;;;;;CAMnC,IAAM,sBAAN,MAA0B;EACtB,YAAY,QAAQ,gBAAgB,SAAS,SAAS,UAAU,QAAQ,UAAU;AAC9E,QAAK,SAAS;AACd,QAAK,iBAAiB;AACtB,QAAK,WAAW;AAChB,QAAK,UAAU;AACf,QAAK,YAAY;AACjB,QAAK,SAAS;AACd,QAAK,WAAW;;;;;;;EAOpB,KAAK,aAAa,YAAY;AAC1B,UAAO,KAAK,iBAAiB,CAAC,MAAK,UAAS,cAAc,QAAQ,QAAQ,YAAY,MAAM,CAAC,GAAG,QAAO,WAAU,aAAa,QAAQ,QAAQ,WAAW,OAAO,CAAC,GAAG,QAAQ,OAAO,OAAO,CAAC;;EAE/L,kBAAkB;AACd,UAAOA,YAAU,MAAM,KAAK,GAAG,KAAK,GAAG,aAAa;IAChD,IAAI,CAAC,SAAS,QAAQ,YAAY,MAAM,QAAQ,IAAI;KAAC,KAAK;KAAS,KAAK;KAAQ,KAAK;KAAS,CAAC;AAC/F,WAAO;KACH,QAAQ,KAAK;KACb,gBAAgB,KAAK;KACrB;KACA;KACA;KACH;KACH;;;AAGV,SAAQ,sBAAsB;;;;;;CC/C9B,IAAI,+BAA0B,aAAc,SAAU,SAAS,YAAY,GAAG,WAAW;EACrF,SAAS,MAAM,OAAO;AAAE,UAAO,iBAAiB,IAAI,QAAQ,IAAI,EAAE,SAAU,SAAS;AAAE,YAAQ,MAAM;KAAI;;AACzG,SAAO,KAAK,MAAM,IAAI,UAAU,SAAU,SAAS,QAAQ;GACvD,SAAS,UAAU,OAAO;AAAE,QAAI;AAAE,UAAK,UAAU,KAAK,MAAM,CAAC;aAAW,GAAG;AAAE,YAAO,EAAE;;;GACtF,SAAS,SAAS,OAAO;AAAE,QAAI;AAAE,UAAK,UAAU,SAAS,MAAM,CAAC;aAAW,GAAG;AAAE,YAAO,EAAE;;;GACzF,SAAS,KAAK,QAAQ;AAAE,WAAO,OAAO,QAAQ,OAAO,MAAM,GAAG,MAAM,OAAO,MAAM,CAAC,KAAK,WAAW,SAAS;;AAC3G,SAAM,YAAY,UAAU,MAAM,SAAS,cAAc,EAAE,CAAC,EAAE,MAAM,CAAC;IACvE;;AAEN,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,gBAAgB,KAAK;CAC7B,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;;;;CAIN,IAAM,gBAAN,MAAM,cAAc;;;;EAIhB,YAAY,MAAM;;;;;AAKd,QAAK,6BAA6B;AAClC,QAAK,cAAc;AACnB,QAAK,gBAAgB;AACrB,QAAK,uBAAuB;AAC5B,QAAK,qBAAqB;AAC1B,QAAK,OAAO,SAAS,QAAQ,SAAS,KAAK,IAAI,OAAO,EAAE;;;;;EAK5D,IAAI,eAAe;AACf,OAAI,KAAK,qBAAqB,gBAC1B,QAAO,KAAK,UAAU;YAEjB,OAAO,KAAK,aAAa,SAC9B,QAAO,CAAC,KAAK,UAAU,OAAO;AAElC,UAAO,EAAE;;;;;EAKb,IAAI,eAAe;AACf,OAAI,KAAK,qBAAqB,gBAC1B,QAAO,KAAK,UAAU;YAEjB,OAAO,KAAK,aAAa,SAC9B,QAAO;AAEX,UAAO;;EAGX,iBAAiB;GACb,IAAI;GACJ,MAAM,WAAW,KAAK,KAAK,KAAK,aAAa,QAAQ,OAAO,KAAK,IAAI,KAAK,cAAc;AACxF,UAAO,mBAAmBP,cAAY,WAChC,QAAQ,OAAO,QAAQ,GACvB,QAAQ,QAAQ,QAAQ;;EAGlC,sBAAsB,QAAQ;AAC1B,OAAI,KAAK,KAAK,oBAAoBA,cAAY,SAC1C,QAAO,QAAQ,OAAO,KAAK,KAAK,SAAS;GAE7C,IAAI;AACJ,OAAI,MAAM,QAAQ,KAAK,KAAK,SAAS,EAAE;AACnC,gBAAU,OAAO,KAAK,KAAK,SAAS,SAAS,EAAE;AAC/C,QAAI,KAAK,KAAK,SAAS;cAElB,KAAK,KAAK,aAAa,OAC5B,KAAI,KAAK,KAAK;OAGd,KAAI,OAAO,EAAE,QAAQ;AAEzB,eAAU,OAAO,OAAO,EAAE,GAAG,EAAE,CAAC;AAChC,UAAO,QAAQ,QAAQ,EAAE;;;;;;;;;;;EAW7B,gBAAgB,QAAQ,UAAQ,OAAO;AACnC,UAAO,UAAU,MAAM,KAAK,GAAG,KAAK,GAAG,aAAa;IAEhD,MAAM,WAAW,EAAE;AACnB,QAAI,KAAK,KAAK,aAAa,OACvB,UAAS,KAAK,OAAO,EAAE,QAAQ,CAAC;aAE3B,MAAM,QAAQ,KAAK,KAAK,SAAS,CACtC,MAAK,IAAI,OAAO,KAAK,KAAK,UAAU;AAChC,iBAAU,OAAO,OAAO,EAAE,GAAG,IAAI,CAAC;AAClC,cAAS,KAAK,IAAI;;aAGjB,EAAE,KAAK,KAAK,oBAAoBA,cAAY,WAAW;AAC5D,iBAAU,OAAO,OAAO,EAAE,GAAG,KAAK,KAAK,SAAS,CAAC;AACjD,cAAS,KAAK,KAAK,KAAK,SAAS;;AAIrC,QAAI;AACA,WAAM,MAAM,KAAK,eAAe,MAAM,CAAC,OAAU;aAE9C,OAAO;AACV,cAAO,YAAY,MAAM;AACzB;;AAGJ,QAAI,KAAK,KAAK,oBAAoBA,cAAY,UAAU;AACpD,cAAO,YAAY,KAAK,KAAK,SAAS;AACtC;;AAGJ,SAAK,IAAI,OAAO,UAAU;AACtB,cAAO,cAAc,IAAI;AAGzB,SAAI;AACA,YAAM,MAAM,KAAK,sBAAsB,MAAM,CAAC,OAAU;cAErD,OAAO;AACV,eAAO,YAAY,MAAM;AACzB;;;AAIR,QAAI,KAAK,KAAK,kBAAkBA,cAAY,UAAU;AAClD,cAAO,YAAY,KAAK,KAAK,OAAO;AACpC;;AAGJ,QAAI,KAAK,KAAK,oBAAoBA,cAAY,UAAU;AACpD,cAAO,YAAY,KAAK,KAAK,SAAS;AACtC;;AAGJ,aAAO,gBAAgB;KACzB;;EAGN,gBAAgB;GACZ,IAAI;GACJ,MAAM,UAAU,KAAK,KAAK,KAAK,YAAY,QAAQ,OAAO,KAAK,IAAI,KAAK,cAAc;AACtF,UAAO,kBAAkBA,cAAY,WAC/B,QAAQ,OAAO,OAAO,GACtB,QAAQ,QAAQ,OAAO;;EAGjC,kBAAkB;GACd,IAAI;GACJ,MAAM,YAAY,KAAK,KAAK,KAAK,cAAc,QAAQ,OAAO,KAAK,IAAI,KAAK,cAAc;AAC1F,UAAO,oBAAoBA,cAAY,WACjC,QAAQ,OAAO,SAAS,GACxB,QAAQ,QAAQ,SAAS;;EAEnC,sBAAsB,GAAG,SAAS;AAC9B,OAAI,KAAK,2BACL,MAAK,IAAI,KAAK,QACV,GAAE,YAAY,GACZ;;EAId,aAAa,SAAS;AAClB,UAAOG,gBAAc,gBAAgB,EAAE,EAAE,QAAQ;;EAErD,MAAM,QAAQ,OAAO,SAAS;GAC1B,IAAI;GACJ,MAAM,kBAAkB,KAAK,QAAQ,UAAU,QAAQ,OAAO,KAAK,IAAI,KAAK,EAAE,EAAE,iBAAiB,KAAK,gBAAgB,CACjH,KAAK,MAAM,KAAK,aAAa,QAAQ,MAAM,CAAC,EAAE,kBAAkB,eAChE,OAAM,MAAK,GACd,CACG,KAAK,MAAM,KAAK,eAAe,QAAQ,MAAM,CAAC,CAC9C,MAAK,MAAK,KAAK,sBAAsB,OAAO,CAAC,EAAE,gBAAgB,gBAC/D,OAAM,MAAK,GACd,CACG,KAAK,MAAM,KAAK,oBAAoB,QAAQ,MAAM,CAAC,CACnD,MAAK,MAAK,KAAK,eAAe,CAAC,EAAE,kBAAkB,gBACnD,OAAM,MAAK,GACd,CACG,KAAK,MAAM,KAAK,oBAAoB,QAAQ,MAAM,CAAC,CACnD,MAAK,MAAK,KAAK,iBAAiB,CAAC;AACtC,QAAK,sBAAsB,eAAe,gBAAgB;AAC1D,QAAK,YAAY,EAAE,QAAQ,OAAO;AAClC,UAAO,IAAIC,eAAa,UAAU,QAAQ,gBAAgB,OAAO,gBAAgB,iBAAiB,eAAe,gBAAgB;;EAErI,gBAAgB,QAAQ,OAAO,SAAS;GACpC,IAAI;GACJ,MAAM,kBAAkB,KAAK,QAAQ,UAAU,QAAQ,OAAO,KAAK,IAAI,KAAK,EAAE,EAAE,iBAAiB,KAAK,gBAAgB,CACjH,KAAK,MAAM,KAAK,aAAa,QAAQ,MAAM,CAAC,EAAE,eAAe,IAAIF,sBAAoB,2BAA2B,EAAE,8BAA8B,eAChJ,KAAK,MAAM,KAAK,eAAe,QAAQ,MAAM,CAAC,CAC9C,YAAY,GACf,CACG,WAAW,KAAK,gBAAgB,QAAQ,cAAc,QAAQ,MAAM,CAAC,CACrE,KAAK,MAAM,KAAK,oBAAoB,QAAQ,MAAM,CAAC,EAAE,gBAAgB,4BACrE,WAAW,KAAK,eAAe,CAAC,EAAE,kBAAkB,4BACpD,WAAW,KAAK,iBAAiB,CAAC;AACvC,QAAK,sBAAsB,eAAe,gBAAgB;AAC1D,QAAK,YAAY,EAAE,QAAQ,OAAO;AAClC,UAAO,IAAIG,0BAAwB,oBAAoB,QAAQ,gBAAgB,OAAO,gBAAgB,cAAc,eAAe,gBAAgB;;EAEvJ,gBAAgB,QAAQ,SAAS;GAC7B,IAAI;GACJ,MAAM,kBAAkB,KAAK,QAAQ,UAAU,QAAQ,OAAO,KAAK,IAAI,KAAK,EAAE,EAAE,iBAAiB,KAAK,gBAAgB,CACjH,KAAK,MAAM,KAAK,aAAa,QAAQ,MAAM,CAAC,EAAE,kBAAkB,eAChE,OAAM,MAAK,GACd,CACG,KAAK,MAAM,KAAK,eAAe,QAAQ,MAAM,CAAC,CAC9C,MAAK,MAAK,KAAK,sBAAsB,OAAO,CAAC,EAAE,gBAAgB,gBAC/D,OAAM,MAAK,GACd,CACG,KAAK,MAAM,KAAK,oBAAoB,QAAQ,MAAM,CAAC,CACnD,MAAK,MAAK,KAAK,eAAe,CAAC,EAAE,kBAAkB,gBACnD,OAAM,MAAK,GACd,CACG,KAAK,MAAM,KAAK,oBAAoB,QAAQ,MAAM,CAAC,CACnD,MAAK,MAAK,KAAK,iBAAiB,CAAC;AACtC,QAAK,sBAAsB,eAAe,gBAAgB;AAC1D,QAAK,YAAY,IAAI,gBAAgB,KAAK,MAAM,QAAQ,MAAM;AAC9D,UAAO,IAAIC,0BAAwB,oBAAoB,QAAQ,gBAAgB,KAAK,WAAW,gBAAgB,iBAAiB,eAAe,gBAAgB;;EAEnK,OAAO,QAAQ,SAAS;GACpB,IAAI;GACJ,MAAM,kBAAkB,KAAK,QAAQ,UAAU,QAAQ,OAAO,KAAK,IAAI,KAAK,EAAE,EAAE,iBAAiB,KAAK,gBAAgB,CACjH,KAAK,MAAM,KAAK,aAAa,QAAQ,MAAM,CAAC,EAAE,eAAe,IAAIJ,sBAAoB,2BAA2B,EAAE,8BAA8B,eAChJ,KAAK,MAAM,KAAK,eAAe,QAAQ,MAAM,CAAC,CAC9C,YAAY,GACf,CACG,WAAW,KAAK,gBAAgB,QAAQ,cAAc,QAAQ,MAAM,CAAC,CACrE,KAAK,MAAM,KAAK,oBAAoB,QAAQ,MAAM,CAAC,EAAE,gBAAgB,4BACrE,WAAW,KAAK,eAAe,CAAC,EAAE,kBAAkB,4BACpD,WAAW,KAAK,iBAAiB,CAAC;AACvC,QAAK,sBAAsB,eAAe,gBAAgB;AAC1D,QAAK,YAAY,IAAI,gBAAgB,KAAK,MAAM,QAAQ,MAAM;AAC9D,UAAO,IAAIK,0BAAwB,oBAAoB,QAAQ,gBAAgB,KAAK,WAAW,gBAAgB,cAAc,eAAe,gBAAgB;;;AAGpK,SAAQ,gBAAgB;AACxB,eAAc,iBAAiB,EAC3B,gBAAgB,QACnB;AACD,eAAc,gBAAgB;EAC1B,MAAM;EAAM,QAAQ;EACvB;AACD,eAAc,kBAAkB,EAC5B,iBAAiB,QACpB;CACD,SAAS,MAAM,IAAI,OAAO;AACtB,UAAQ,MAAM,IAAI,SAAS,SAAS,WAAW;AAC3C,OAAI,UAAU,QAAQ,UAAU,KAAK,IAAI,KAAK,IAAI,MAAM,QACpD,QAAO,IAAIP,cAAY,SAAS,eAAe,YAAY,CAAC;QAE3D;IACD,MAAM,KAAK,iBAAiB,QAAQ,EAAE,EAAE,GAAG;AAC3C,QAAI,MACA,OAAM,iBAAiB,UAAS,OAAM;AAClC,kBAAa,GAAG;AAChB,YAAO,IAAIA,cAAY,SAAS,eAAe,YAAY,CAAC;MAC9D;;IAGZ;;CAEN,IAAM,kBAAN,MAAsB;EAClB,YAAY,MAAM,OAAO;AACrB,QAAK,aAAa;AAClB,QAAK,QAAQ,EAAE;AACf,QAAK,OAAO;AACZ,QAAK,QAAQ;;EAEjB,IAAI,OAAO;AACP,UAAO,KAAK;;EAEhB,IAAI,YAAY;AACZ,UAAO,KAAK;;EAEhB,KAAK,SAAS;AACV,OAAI,KAAK,KAAK,wBAAwBA,cAAY,SAC9C,QAAO,QAAQ,OAAO,KAAK,KAAK,aAAa;GAEjD,MAAM,UAAU,KAAK,KAAK,iBAAiB,SACrC,KACA,KAAK,KAAK;AAChB,UAAO,QAAQ,QAAQ,OAAU,CAC5B,WAAW;AACZ,SAAK,MAAM,KAAK,QAAQ;KAC1B,CACG,KAAK,MAAM,SAAS,KAAK,MAAM,CAAC;;EAEzC,WAAW;AACP,OAAI,KAAK,KAAK,yBAAyBA,cAAY,SAC/C,QAAO,QAAQ,OAAO,KAAK,KAAK,cAAc;GAElD,MAAM,UAAU,KAAK,KAAK,kBAAkB,SACtC,KACA,KAAK,KAAK;AAChB,UAAO,QAAQ,QAAQ,OAAU,CAC5B,WAAW;AACZ,SAAK,aAAa;KACpB,CACG,KAAK,MAAM,SAAS,KAAK,MAAM,CAAC;;;;;;;;AC7T7C,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,mCAAmC,QAAQ,mCAAmC,QAAQ,mCAAmC,QAAQ,yBAAyB,QAAQ,iBAAiB,KAAK;CAChM,MAAMQ;;;;;;CAMN,SAASC,iBAAe,MAAM,WAAW,QAAQ,SAAS,OAAO;EAC7D,IAAI,IAAI,IAAI,IAAI;AAChB,MAAI,QAAQ,SAAS;GACjB,IAAI,QAAQ,KAAK,KAAK,QAAQ,UAAU,MAAM,KAAK,KAAK,IAAI;AAC5D,QAAK,MAAM,UAAU,KAAK,QAAQ,kBAAkB,QAAQ,OAAO,KAAK,IAAI,KAAK,EAAE,EAAE,QAAO,MAAK,EAAE,eAAe,CAAC,SAAS,EAAE;IAC1H,MAAM,OAAO;AACb,YAAQ,KAAK,KAAK,QAAQ,KAAK,eAAe,MAAM,KAAK,KAAK,IAAI;;AAEtE,UAAO,KAAK,QAAQ,OAAO,QAAQ;;AAEvC,MAAI,QAAQ,mBAAmB;GAC3B,IAAI,QAAQ,KAAK,KAAK,QAAQ,UAAU,gBAAgB,KAAK,KAAK,IAAI;AACtE,QAAK,MAAM,UAAU,KAAK,QAAQ,kBAAkB,QAAQ,OAAO,KAAK,IAAI,KAAK,EAAE,EAAE,QAAO,MAAK,EAAE,yBAAyB,CAAC,SAAS,EAAE;IACpI,MAAM,OAAO;AACb,YAAQ,KAAK,KAAK,QAAQ,KAAK,yBAAyB,MAAM,KAAK,KAAK,IAAI;;AAEhF,UAAO,KAAK,QAAQ,OAAO,QAAQ;;AAEvC,MAAI,QAAQ,mBAAmB;GAC3B,IAAI,QAAQ,KAAK,QAAQ,UAAU,gBAAgB,KAAK,IAAI;AAC5D,QAAK,MAAM,UAAU,KAAK,QAAQ,kBAAkB,QAAQ,OAAO,KAAK,IAAI,KAAK,EAAE,EAAE,QAAO,MAAK,EAAE,yBAAyB,CAAC,SAAS,EAAE;IACpI,MAAM,OAAO;AACb,YAAQ,KAAK,QAAQ,KAAK,yBAAyB,MAAM,KAAK,IAAI;;AAEtE,UAAO,KAAK,QAAQ,QAAQ;;AAEhC,MAAI,QAAQ,UAAU;GAClB,IAAI,QAAQ,KAAK,QAAQ,UAAU,OAAO,KAAK,IAAI;AACnD,QAAK,MAAM,UAAU,KAAK,QAAQ,kBAAkB,QAAQ,OAAO,KAAK,IAAI,KAAK,EAAE,EAAE,QAAO,MAAK,EAAE,gBAAgB,CAAC,SAAS,EAAE;IAC3H,MAAM,OAAO;AACb,YAAQ,KAAK,QAAQ,KAAK,gBAAgB,MAAM,KAAK,IAAI;;AAE7D,UAAO,KAAK,QAAQ,QAAQ;;AAEhC,cAAU,YAAY,KAAK;;AAE/B,SAAQ,iBAAiBA;;;;CAIzB,SAAS,uBAAuB,WAAW,QAAQ,OAAO,SAAS;AAC/D,SAAOA,iBAAe,SAAS,WAAW,QAAQ,SAAS,MAAM;;AAErE,SAAQ,yBAAyB;;;;CAIjC,SAAS,iCAAiC,WAAW,QAAQ,OAAO,SAAS;AACzE,SAAOA,iBAAe,mBAAmB,WAAW,QAAQ,SAAS,MAAM;;AAE/E,SAAQ,mCAAmC;;;;CAI3C,SAAS,iCAAiC,WAAW,QAAQ,SAAS;AAClE,SAAOA,iBAAe,mBAAmB,WAAW,QAAQ,QAAQ;;AAExE,SAAQ,mCAAmC;;;;CAI3C,SAAS,iCAAiC,WAAW,QAAQ,SAAS;AAClE,SAAOA,iBAAe,UAAU,WAAW,QAAQ,QAAQ;;AAE/D,SAAQ,mCAAmC;;;;;;ACxE3C,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,8BAA8B,KAAK;CAC3C,IAAM,8BAAN,MAAkC;EAC9B,YAAY,QAAQ,SAAS,UAAU,uBAAuB,gBAAgB;GAAE,MAAM;GAAM,QAAQ;GAAI,EAAE;AACtG,QAAK,aAAa;AAClB,QAAK,aAAa,EAAE;AACpB,QAAK,SAAS;AACd,QAAK,UAAU;AACf,QAAK,WAAW;AAChB,QAAK,WAAW,EAAE;AAClB,QAAK,UAAU;AACf,QAAK,SAAS;;;;;;;;EAQlB,kBAAkB;AACd,OAAI,CAAC,KAAK,YAAY;AAClB,SAAK,aAAa;AAClB,SAAK,IAAI,KAAK,KAAK,WACf,IAAG;;;;;;EAOf,oBAAoB,MAAM;AACtB,QAAK,QAAQ,KAAK;;;;;;;;;;;EAWtB,IAAI,YAAY;AACZ,UAAO,KAAK;;;;;EAKhB,SAAS,UAAU;GACf,MAAM,IAAI,KAAK;AACf,KAAE,KAAK,SAAS;AAChB,gBAAa;IACT,IAAI,IAAI,EAAE,QAAQ,SAAS;AAC3B,QAAI,KAAK,EACL,GAAE,OAAO,GAAG,EAAE;;;;AAI9B,SAAQ,8BAA8B;;;;;;ACvDtC,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;CAC7D,IAAI;AACJ,QAAO,eAAe,SAAS,eAAe;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,eAAe;;EAAgB,CAAC;CAC5H,IAAI;AACJ,QAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,kBAAkB;;EAAsB,CAAC;AAC3I,QAAO,eAAe,SAAS,oBAAoB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,kBAAkB;;EAAqB,CAAC;AACzI,QAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,kBAAkB;;EAAsB,CAAC;CAC3I,IAAI;AACJ,QAAO,eAAe,SAAS,YAAY;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,YAAY;;EAAa,CAAC;CACnH,IAAI;AACJ,QAAO,eAAe,SAAS,mBAAmB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,cAAc;;EAAoB,CAAC;CACnI,IAAI;AACJ,QAAO,eAAe,SAAS,6BAA6B;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,oBAAoB;;EAA8B,CAAC;CAC7J,IAAI;AACJ,QAAO,eAAe,SAAS,iBAAiB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,iBAAiB;;EAAkB,CAAC;CAClI,IAAI;AACJ,QAAO,eAAe,SAAS,YAAY;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,WAAW;;EAAa,CAAC;AAClH,QAAO,eAAe,SAAS,iBAAiB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,WAAW;;EAAkB,CAAC;CAC5H,IAAI;AACJ,QAAO,eAAe,SAAS,uBAAuB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,wBAAwB;;EAAwB,CAAC;CACrJ,IAAI;AACJ,QAAO,eAAe,SAAS,uBAAuB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,wBAAwB;;EAAwB,CAAC;CACrJ,IAAI;AACJ,QAAO,eAAe,SAAS,uBAAuB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,wBAAwB;;EAAwB,CAAC;CACrJ,IAAI;AACJ,QAAO,eAAe,SAAS,aAAa;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,aAAa;;EAAc,CAAC;CACtH,IAAI;AACJ,QAAO,eAAe,SAAS,kBAAkB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,kBAAkB;;EAAmB,CAAC;AACrI,QAAO,eAAe,SAAS,oCAAoC;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,kBAAkB;;EAAqC,CAAC;AACzK,QAAO,eAAe,SAAS,oCAAoC;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,kBAAkB;;EAAqC,CAAC;AACzK,QAAO,eAAe,SAAS,oCAAoC;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,kBAAkB;;EAAqC,CAAC;AACzK,QAAO,eAAe,SAAS,0BAA0B;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,kBAAkB;;EAA2B,CAAC;CACrJ,IAAI;AACJ,QAAO,eAAe,SAAS,+BAA+B;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,sBAAsB;;EAAgC,CAAC;;;;;;;AChCnK,IAAI,0BAA0B,cAAcC,8BAAY;CACvD,cAAc;AACb,QAAM,4CAA4C;GACjD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,GAAG;IACH;GACD;IACC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,QAAQ;IACR,SAAS;IACT;GACD,CAAC;;CAEH,OAAO,OAAO;EACb,MAAM,UAAU,WAAW,OAAO,OAAO,KAAK,iBAAiB;AAC/D,UAAQ,sBAAsB;AAC9B,UAAQ,cAAc;AACtB,UAAQ,aAAa;AACrB,UAAQ,gBAAgB;AACxB,UAAQ,QAAQ,EAAE;AAClB,MAAI,UAAU,KAAK,EAAG,+CAAuB,MAAM,SAAS,MAAM;AAClE,SAAO;;CAER,mBAAmB,QAAQ,QAAQ,SAAS,QAAQ;EACnD,IAAI,UAAU,UAAU,KAAK,QAAQ,EAAE,MAAM,OAAO,MAAM;AAC1D,SAAO,OAAO,MAAM,KAAK;GACxB,IAAI,CAAC,SAAS,YAAY,OAAO,KAAK;AACtC,WAAQ,SAAR;IACC,KAAK;AACJ,aAAQ,sBAAsB,OAAO,QAAQ;AAC7C;IACD,KAAK;AACJ,aAAQ,cAAc,OAAO,QAAQ;AACrC;IACD,KAAK;AACJ,aAAQ,aAAa,OAAO,QAAQ;AACpC;IACD,KAAK;AACJ,aAAQ,gBAAgB,OAAO,QAAQ;AACvC;IACD,KAAK;AACJ,aAAQ,MAAM,KAAK,KAAK,mBAAmB,QAAQ,OAAO,QAAQ,EAAE,QAAQ,CAAC;AAC7E;IACD;KACC,IAAI,IAAI,QAAQ;AAChB,SAAI,MAAM,QAAS,OAAM,IAAI,WAAW,MAAM,iBAAiB,QAAQ,cAAc,SAAS,QAAQ,KAAK,WAAW;KACtH,IAAI,IAAI,OAAO,KAAK,SAAS;AAC7B,SAAI,MAAM,MAAO,EAAC,MAAM,OAAOC,sCAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,EAAE;;;AAG/G,SAAO;;CAER,oBAAoB,SAAS,QAAQ,SAAS;AAC7C,MAAI,QAAQ,wBAAwB,GAAI,QAAO,IAAI,GAAGC,2BAAS,gBAAgB,CAAC,OAAO,QAAQ,oBAAoB;AACnH,MAAI,QAAQ,gBAAgB,GAAI,QAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,OAAO,QAAQ,YAAY;AACnG,MAAI,QAAQ,eAAe,GAAI,QAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,OAAO,QAAQ,WAAW;AACjG,MAAI,QAAQ,kBAAkB,GAAI,QAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,OAAO,QAAQ,cAAc;AACvG,OAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,MAAM,QAAQ,IAAK,MAAK,oBAAoB,QAAQ,MAAM,IAAI,OAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM;EACzJ,IAAI,IAAI,QAAQ;AAChB,MAAI,MAAM,MAAO,EAAC,KAAK,OAAOD,sCAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,OAAO;AAC9F,SAAO;;;;;;AAMT,MAAM,qBAAqB,IAAI,yBAAyB;AACxD,IAAI,2BAA2B,cAAcD,8BAAY;CACxD,cAAc;AACb,QAAM,6CAA6C,CAAC;GACnD,IAAI;GACJ,MAAM;GACN,MAAM;GACN,GAAG;GACH,EAAE;GACF,IAAI;GACJ,MAAM;GACN,MAAM;GACN,GAAG;GACH,CAAC,CAAC;;CAEJ,OAAO,OAAO;EACb,MAAM,UAAU,WAAW,OAAO,OAAO,KAAK,iBAAiB;AAC/D,UAAQ,UAAU;AAClB,UAAQ,UAAU;AAClB,MAAI,UAAU,KAAK,EAAG,+CAAuB,MAAM,SAAS,MAAM;AAClE,SAAO;;CAER,mBAAmB,QAAQ,QAAQ,SAAS,QAAQ;EACnD,IAAI,UAAU,UAAU,KAAK,QAAQ,EAAE,MAAM,OAAO,MAAM;AAC1D,SAAO,OAAO,MAAM,KAAK;GACxB,IAAI,CAAC,SAAS,YAAY,OAAO,KAAK;AACtC,WAAQ,SAAR;IACC,KAAK;AACJ,aAAQ,UAAU,OAAO,MAAM;AAC/B;IACD,KAAK;AACJ,aAAQ,UAAU,OAAO,QAAQ;AACjC;IACD;KACC,IAAI,IAAI,QAAQ;AAChB,SAAI,MAAM,QAAS,OAAM,IAAI,WAAW,MAAM,iBAAiB,QAAQ,cAAc,SAAS,QAAQ,KAAK,WAAW;KACtH,IAAI,IAAI,OAAO,KAAK,SAAS;AAC7B,SAAI,MAAM,MAAO,EAAC,MAAM,OAAOC,sCAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,EAAE;;;AAG/G,SAAO;;CAER,oBAAoB,SAAS,QAAQ,SAAS;AAC7C,MAAI,QAAQ,YAAY,MAAO,QAAO,IAAI,GAAGC,2BAAS,OAAO,CAAC,KAAK,QAAQ,QAAQ;AACnF,MAAI,QAAQ,YAAY,GAAI,QAAO,IAAI,GAAGA,2BAAS,gBAAgB,CAAC,OAAO,QAAQ,QAAQ;EAC3F,IAAI,IAAI,QAAQ;AAChB,MAAI,MAAM,MAAO,EAAC,KAAK,OAAOD,sCAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,OAAO;AAC9F,SAAO;;;;;;AAMT,MAAM,sBAAsB,IAAI,0BAA0B;;;;AAI1D,MAAM,oBAAoB,IAAIE,8BAAY,2CAA2C,CAAC;CACrF,MAAM;CACN,SAAS,EAAE;CACX,GAAG;CACH,GAAG;CACH,CAAC,CAAC;;;;ACtJH,MAAa,mBAAmB;AAEhC,SAAgB,wBAAwB,WAAoC;AAC1E,KAAI,CAAC,UAAW,QAAO;AAGvB,QAAO,UAAU,SAAS,kBAAkB,SAAS;;;;;;;;;;;;ACFvD,SAAgBC,YAAU,MAAoB;AAC5C,QAAO,OAAO,SAAS,cAAc,KAAK,eAAe;;;;;AAM3D,SAAgB,KACd,QACA,cACA,SACU;AACV,KAAI,OAAO,OAAO,kBAAkB,YAAY;AAC9C,SAAO,MAAM,sCAAsC,eAAe;AAClE;;AAGF,KAAIA,YAAU,OAAO,cAAc,EAAE;AACnC,SAAO,MAAM,YAAY,aAAa,qBAAqB;AAC3D;;CAGF,MAAM,WAAW,OAAO;CACxB,MAAM,UAAU,QAAQ,SAAS;AAEjC,KAAI,OAAO,YAAY,YAAY;AACjC,SAAO,MAAM,gDAAgD,eAAe;AAC5E;;AAIF,CAAC,QAAgB,aAAa;AAC9B,CAAC,QAAgB,YAAY;AAC7B,CAAC,QAAgB,gBAAgB;AAEjC,QAAO,gBAAgB;AACvB,QAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrBT,SAAgB,kBAAkB,oBAA8B,EAAE,EAAU;CAC1E,MAAM,0BAA0B,MAAM;AAEtC,OAAM,kBAAkB;CACxB,MAAM,qBAAI,IAAI,OAAO,EAAC,SAAS;AAC/B,OAAM,kBAAkB;CAQxB,MAAM,cAAc,CAAC,GANG;EACtB;EACA;EACA;EACD,EAEwC,GAAG,kBAAkB;AAE9D,QAAO,EACJ,MAAM,KAAK,CACX,MAAM,EAAE,CACR,QAAQ,MAAM,CAAC,YAAY,MAAM,YAAY,EAAE,SAAS,QAAQ,CAAC,CAAC,CAClE,KAAK,KAAK;;;;;;;;;ACqDf,SAAS,4BACP,UACsB;AACtB,QAAO;EACL,UAAU,YAAY;EACtB,QAAQ;EACR,SAAS,EAAE;EACZ;;;;;AAMH,SAAS,8BAAoD;AAC3D,QAAO;EACL,QAAQ;EACR,KAAK;EACL,QAAQ;EACR,SAAS,EAAE;EACX,MAAM;EACN,UAAU;EACV,aAAa;EACd;;;;;AAMH,SAAS,+BAAsD;AAC7D,QAAO;EACL,aAAa;EACb,kBAAkB;EAClB,kBAAkB;EAClB,UAAU;EACV,UAAU;EACV,SAAS,EAAE;EACZ;;;;;AAMH,SAAS,+BAAsD;AAC7D,QAAO,EACL,SAAS,EAAE,EACZ;;AAGH,IAAa,sBAAb,MAAiC;CAG/B,YAAY,kBAAqC;OAFzC,qBAA0C,EAAE;AAGlD,MAAI,kBAAkB,KACpB,MAAK,qBAAqB,iBAAiB,KAAK,KAAK,cACnD,KAAK,qBAAqB,UAAU,CACrC;;CAIL,yBACE,QACA,KACA,SACA,MACS;EACT,MAAMC,WAAyB;GAC7B,SAAS;GACT,QAAQ;GACR,MAAMC,uBAAS;GACf,UAAU;GACV,YAAY;IACV;IACA;IACA,QAAQ;IACR,SAAS,WAAW,EAAE;IACtB,aAAa;IACb;IACA,UAAU;IACX;GACF;AAED,OAAK,MAAM,qBAAqB,KAAK,oBAAoB;GACvD,MAAM,SAAS,kBAAkB,SAAS;AAC1C,OAAI,UAAU,OAAO,SAAS,OAC5B,QAAO;;AAIX,SAAO;;CAGT,0BAA0B,YAA2C;EACnE,MAAM,mBAAmB,KAAK,MAAM,KAAK,UAAU,WAAW,CAAC;EAE/D,MAAMD,WAAyB;GAC7B,SAAS;GACT,QAAQ;GACR,MAAMC,uBAAS;GACf,UAAU,WAAW,YAAY;GACjC,YAAY;GACb;AAED,OAAK,MAAM,qBAAqB,KAAK,oBAAoB;GACvD,MAAM,SAAS,kBAAkB,SAAS;AAC1C,OAAI,UAAU,OAAO,SAAS,OAC5B,QAAO;;AAIX,SAAO;;CAGT,gBAAgB,UAAsC;EACpD,MAAMC,UAA6B,EAAE;AAErC,OAAK,MAAM,qBAAqB,KAAK,oBAAoB;GACvD,MAAM,SAAS,kBAAkB,SAAS;AAC1C,OAAI,OACF,SAAQ,KAAK,OAAO;;AAIxB,MAAI,QAAQ,SAAS,EACnB,UAAS,oBAAoB;GAC3B,aAAa;GACb;GACD;AAGH,SAAO;;CAGT,AAAQ,qBAAqB,WAA6C;EACxE,MAAM,EAAE,SAAS,WAAW;EAE5B,MAAM,kBAAkB,KAAK,eAAe,QAAQ;AACpD,MAAI,OAAO,SAAS,OAClB,SAAQ,SAAS;AACf,OAAI,CAAC,gBAAgB,KAAK,CACxB;AAIF,OAAI,KAAK,WACP,MAAK,aACH,KAAK,SAASD,uBAAS,SACnB,4BAA4B,KAAK,SAAS,GAC1C,6BAA6B;AAGrC,OAAI,KAAK,YACP,MAAK,cACH,KAAK,SAASA,uBAAS,SACnB,8BAA8B,GAC9B,8BAA8B;AAGtC,UAAO;IACL,MAAM;IACN,OAAO;IACP,QAAQ;IACR,aAAa,KAAK,kBAAkB,UAAU;IAC/C;;EAIL,MAAM,iBAAiB,KAAK,cAAc,SAAS,OAAO;EAC1D,MAAM,mBAAmB,KAAK,oBAAoB,QAAQ;AAE1D,UAAQ,SAAS;AACf,OAAI,CAAC,gBAAgB,KAAK,CACxB;AAIF,OADe,eAAe,KAAK,CAEjC,QAAO;IACL,MAAM,OAAO;IACb,OAAO;IACP,QAAQ;IACT;;;CAOP,AAAQ,cACN,SACA,QACiC;EACjC,MAAM,iBAAiB,KAAK,sBAAsB,OAAO;AAEzD,MAAI,QAAQ,SACV,QAAO,KAAK,sBAAsB,QAAQ,UAAU,gBAAgB,QAAQ,UAAU;AAExF,MAAI,QAAQ,WACV,QAAO,KAAK,wBAAwB,QAAQ,YAAY,gBAAgB,QAAQ,UAAU;AAE5F,MAAI,QAAQ,WACV,QAAO,KAAK,oBAAoB,QAAQ,YAAY,gBAAgB,QAAQ,UAAU;AAExF,MAAI,QAAQ,QACV,QAAO,KAAK,qBAAqB,gBAAgB,QAAQ,UAAU;AAErE,MAAI,QAAQ,SACV,QAAO,KAAK,sBAAsB,gBAAgB,QAAQ,UAAU;AAGtE,eAAa;;CAGf,AAAQ,eAAe,SAAgD;EACrE,MAAME,SAA4B,EAAE;AAEpC,MAAI,QAAQ,cAAc,WACxB,QAAO,MAAM,SAAS,KAAK,SAASF,uBAAS,OAAO;WAC3C,QAAQ,cAAc,UAC/B,QAAO,MAAM,SAAS,KAAK,SAASA,uBAAS,OAAO;AAGtD,MAAI,QAAQ,OAEV,KAAI,QAAQ,OAAO,WAAW,GAAG,QAE1B;GACL,MAAM,UAAU,QAAQ,OAAO,KAAK,WAAW,OAAO,aAAa,CAAC;AACpE,UAAO,MAAM,SAAS;IACpB,MAAM,aAAa,KAAK,YAAY,QAAQ,aAAa;AACzD,WAAO,aAAa,QAAQ,SAAS,WAAW,GAAG;KACnD;;AAIN,MAAI,QAAQ,YACV,KAAI;GACF,MAAM,UAAU,IAAI,OAAO,QAAQ,YAAY;AAC/C,OAAI,QAAQ,cAAc,WACxB,QAAO,MAAM,SAAS;IACpB,MAAMG,SAAQ,KAAK,YAAqC;AACxD,WAAOA,SAAO,QAAQ,KAAKA,OAAK,GAAG;KACnC;OAEF,QAAO,MAAM,SAAS;IACpB,MAAMA,SAAQ,KAAK,YAAqC;AACxD,WAAOA,SAAO,QAAQ,KAAKA,OAAK,GAAG;KACnC;WAEG,OAAO;AACd,SAAM,IAAI,MACR,yBAAyB,QAAQ,YAAY,KAAK,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GACzG;;AAIL,MAAI,QAAQ,KACV,KAAI;GACF,MAAM,cAAc,IAAI,OAAO,QAAQ,KAAK;AAC5C,OAAI,QAAQ,cAAc,WACxB,QAAO,MAAM,SAAS;IACpB,MAAM,WAAY,KAAK,YAAqC;AAC5D,WAAO,WAAW,YAAY,KAAK,SAAS,GAAG;KAC/C;OAEF,QAAO,MAAM,SAAS;IACpB,MAAM,MAAO,KAAK,YAAqC;AACvD,QAAI,CAAC,IACH,QAAO;AAET,QAAI;KACF,MAAM,WAAW,IAAI,IAAI,KAAK,mBAAmB,CAAC;AAClD,YAAO,YAAY,KAAK,SAAS;YAC3B;AACN,YAAO;;KAET;WAEG,OAAO;AACd,SAAM,IAAI,MACR,yBAAyB,QAAQ,KAAK,KAAK,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GAClG;;AAIL,MAAI,OAAO,WAAW,EACpB,cAAa;AAEf,MAAI,OAAO,WAAW,EACpB,QAAO,OAAO;AAGhB,UAAQ,SAAS,OAAO,OAAO,UAAU,MAAM,KAAK,CAAC;;CAGvD,AAAQ,sBACN,UACA,gBACA,WACiC;EACjC,MAAM,WAAW,cAAc,YAAY,eAAe;AAC1D,UAAQ,SAAS;GACf,MAAM,SAAS,KAAK;AACpB,OAAI,CAAC,OACH,QAAO;AAGT,OAAI;IAEF,MAAM,OAAO,cAAc,YACtB,OAAgC,OAChC,OAAyD;AAE9D,QAAI,CAAC,KACH,QAAO;IAIT,IAAI;AACJ,QAAI,OAAO,SAAS,SAClB,KAAI;KACF,MAAM,UAAU,OAAO,KAAK,MAAM,SAAS,CAAC,SAAS,OAAO;AAC5D,eAAU,KAAK,MAAM,QAAQ;aACtB,GAAG;AAEV,YAAO;;QAGT,WAAU;IAGZ,MAAM,QAAQC,iBAAG,MAAM,SAAS,UAAU,eAAe;AAGzD,QAAI,OAAO,SAAS,YAAY,MAAM,SAAS,GAAG;KAChD,MAAM,YAAY,OAAO,KAAK,KAAK,UAAU,QAAQ,CAAC,CAAC,SAAS,SAAS;AACzE,SAAI,cAAc,UAChB,CAAC,OAAgC,OAAO;SAExC,CAAC,OAAyD,OAAO;;AAIrE,WAAO,MAAM,SAAS;YACf,OAAO;AACd,WAAO;;;;CAKb,AAAQ,oBACN,YACA,gBACA,GACiC;EACjC,MAAM,cAAc,WAAW,aAAa;AAE5C,UAAQ,SAAS;GAIf,MAAM,SAAS,KAAK;AACpB,OAAI,CAAC,QAAQ,QACX,QAAO;GAGT,IAAI,UAAU;AACd,QAAK,MAAM,OAAO,OAAO,KAAK,OAAO,QAAQ,CAC3C,KAAI,IAAI,aAAa,KAAK,aAAa;IACrC,MAAM,cAAc,OAAO,QAAQ;AACnC,QAAI,OAAO,gBAAgB,UAAU;AACnC,KAAC,OAAO,QAAmC,OAAO,eAAe,YAAY;AAC7E,eAAU;;;AAIhB,UAAO;;;CAIX,AAAQ,wBACN,YACA,gBACA,WACiC;AACjC,UAAQ,SAAS;AACf,OAAI,CAAC,KAAK,WACR,QAAO;AAGT,UAAO,KAAK,0BAA0B,KAAK,YAAY,YAAY,gBAAgB,UAAU;;;CAIjG,AAAQ,sBACN,gBACA,WACiC;EACjC,MAAM,WAAW,cAAc,YAAY,eAAe;AAE1D,UAAQ,SAAS;GACf,MAAM,SAAS,KAAK;AACpB,OAAI,CAAC,UAAU,EAAE,UAAU,WAAW,OAAO,SAAS,OACpD,QAAO;AAGT,OAAI,cAAc,YAAY;IAE5B,MAAM,eAAe;AACrB,QAAI,OAAO,aAAa,SAAS,SAC/B,KAAI;KAEF,MAAM,cAAc,eADJ,OAAO,KAAK,aAAa,MAAM,SAAS,CAAC,SAAS,OAAO,CAC9B;AAC3C,kBAAa,OAAO,OAAO,KAAK,YAAY,CAAC,SAAS,SAAS;aACxD,OAAO;AAEd,kBAAa,OAAO,OAAO,KAAK,eAAe,aAAa,KAAK,CAAC,CAAC,SAAS,SAAS;;UAGpF;IAEL,MAAM,cAAc;AACpB,QAAI,OAAO,YAAY,SAAS,SAC9B,KAAI;KAEF,MAAM,cAAc,eADJ,OAAO,KAAK,YAAY,MAAM,SAAS,CAAC,SAAS,OAAO,CAC7B;AAC3C,iBAAY,OAAO,OAAO,KAAK,YAAY,CAAC,SAAS,SAAS;aACvD,OAAO;AAEd,iBAAY,OAAO,OAAO,KAAK,eAAe,YAAY,KAAK,CAAC,CAAC,SAAS,SAAS;;aAE5E,OAAO,YAAY,SAAS,UAAU;KAG/C,MAAM,cAAc,eADJ,KAAK,UAAU,YAAY,KAAK,CACL;AAE3C,SAAI;AACF,kBAAY,OAAO,KAAK,MAAM,YAAY;aACpC;AAEN,kBAAY,OAAO;;;;AAIzB,UAAO;;;CAIX,AAAQ,qBACN,gBACA,WACiC;AACjC,UAAQ,SAAS;AACf,OAAI,CAAC,KAAK,WACR,QAAO;AAET,UAAO,KAAK,uBAAuB,KAAK,YAAY,gBAAgB,UAAU;;;CAIlF,AAAQ,0BACN,MACA,YACA,gBACA,WACS;AACT,MAAI,CAAC,KACH,QAAO;EAGT,IAAI,UAAU;AAEd,MAAI,cAAc,YAAY;GAC5B,MAAM,aAAa;AACnB,OAAI,WAAW,QAAQ,OAAO,WAAW,SAAS,UAAU;IAC1D,MAAM,MAAM,IAAI,IAAI,WAAW,MAAM,mBAAmB;AACxD,QAAI,IAAI,aAAa,IAAI,WAAW,EAAE;KACpC,MAAM,WAAW,IAAI,aAAa,IAAI,WAAW;AACjD,SAAI,aAAa,MAAM;MACrB,MAAM,WAAW,eAAe,SAAS;AACzC,UAAI,aAAa,IAAI,YAAY,SAAS;AAC1C,iBAAW,OAAO,IAAI,WAAW,IAAI;AACrC,gBAAU;;;;SAIX;GACL,MAAM,aAAa;AAEnB,OAAI,WAAW,OAAO,OAAO,WAAW,QAAQ,SAC9C,KAAI;IACF,MAAM,MAAM,IAAI,IAAI,WAAW,IAAI;AACnC,QAAI,IAAI,aAAa,IAAI,WAAW,EAAE;KACpC,MAAM,WAAW,IAAI,aAAa,IAAI,WAAW;AACjD,SAAI,aAAa,MAAM;MACrB,MAAM,WAAW,eAAe,SAAS;AACzC,UAAI,aAAa,IAAI,YAAY,SAAS;AAC1C,iBAAW,MAAM,IAAI,UAAU;AAC/B,gBAAU;;;WAGR;AAKV,OAAI,WAAW,UAAU,OAAO,WAAW,WAAW,SACpD,KAAI;IACF,MAAM,MAAM,IAAI,IAAI,WAAW,QAAQ,mBAAmB;AAC1D,QAAI,IAAI,aAAa,IAAI,WAAW,EAAE;KACpC,MAAM,WAAW,IAAI,aAAa,IAAI,WAAW;AACjD,SAAI,aAAa,MAAM;MACrB,MAAM,WAAW,eAAe,SAAS;AACzC,UAAI,aAAa,IAAI,YAAY,SAAS;AAC1C,iBAAW,SAAS,IAAI,WAAW,IAAI;AACvC,gBAAU;;;WAGR;;AAMZ,SAAO;;CAGT,AAAQ,uBACN,MACA,gBACA,WACS;AACT,MAAI,CAAC,KACH,QAAO;EAGT,IAAI,UAAU;AAEd,MAAI,cAAc,YAAY;GAC5B,MAAM,aAAa;AACnB,OAAI,WAAW,QAAQ,OAAO,WAAW,SAAS,UAAU;AAC1D,eAAW,OAAO,eAAe,WAAW,KAAK;AACjD,cAAU;;SAEP;GACL,MAAM,aAAa;AACnB,OAAI,WAAW,OAAO,OAAO,WAAW,QAAQ,UAAU;AACxD,eAAW,MAAM,eAAe,WAAW,IAAI;AAC/C,cAAU;;AAEZ,OAAI,WAAW,UAAU,OAAO,WAAW,WAAW,UAAU;AAC9D,eAAW,SAAS,eAAe,WAAW,OAAO;AACrD,cAAU;;;AAId,SAAO;;CAGT,AAAQ,sBAAsB,QAA6C;AACzE,UAAQ,OAAO,MAAf;GACE,KAAK,SACH,SAAQ,UAAU;AAGhB,WAAO,GAFQ,OAAO,cAAc,cACvB,OAAO,WAAW,SAAS,CAAC,OAAO,OAAO,MAAM,CAAC,CAAC,OAAO,MAAM,CACpD,UAAU,GAAG,GAAG,CAAC;;GAE7C,KAAK,OACH,SAAQ,UAAU;AAEhB,YADiB,OAAO,YAAY,KACpB,OAAO,MAAM,OAAO;;GAExC,KAAK,UACH,cAAa,OAAO;GACtB,QACE,SAAQ,UAAU;;;CAIxB,AAAQ,oBAAoB,SAAuC;AACjE,MAAI,QAAQ,SAAU,QAAO,YAAY,QAAQ;AACjD,MAAI,QAAQ,WAAY,QAAO,cAAc,QAAQ;AACrD,MAAI,QAAQ,WAAY,QAAO,UAAU,QAAQ;AACjD,MAAI,QAAQ,QAAS,QAAO;AAC5B,MAAI,QAAQ,SAAU,QAAO;AAC7B,SAAO;;CAGT,AAAQ,kBAAkB,WAAkC;AAC1D,SAAO,KAAK,UAAU,UAAU,QAAQ;;;;;;;AC7mB5C,IAAa,sBAAb,cAAyC,sBAAsB;CAO7D,YAAY,QAAmC;AAC7C,QAAM,QAAQ,OAAO;OAPN,uBAAuB;AAQtC,OAAK,OAAO,OAAO;AACnB,OAAK,cAAc,IAAI,iBAAiB;AACxC,OAAK,YAAY,cAAc,aAAa;AAC5C,OAAK,kBAAkB,IAAI,oBAAoB,OAAO,WAAW;;CAGnE,OAAsC;AACpC,SAAO,CACL,IAAI,4BAA4B;GAC9B,MAAM;GACN,mBAAmB,CAAC,IAAI;GACxB,QAAQ,kBAAqC,KAAK,iBAAiB,eAAe,OAAO;GAC1F,CAAC,EACF,IAAI,4BAA4B;GAC9B,MAAM;GACN,mBAAmB,CAAC,IAAI;GACxB,QAAQ,kBAAsC,KAAK,iBAAiB,eAAe,QAAQ;GAC5F,CAAC,CACH;;CAGH,AAAQ,iBACN,YACA,UACwC;EACxC,MAAM,gBAAgB,SAAS,aAAa;AAC5C,SAAO,MAAM,kCAAkC,cAAc,aAAa,KAAK,KAAK,OAAO;AAE3F,MAAI,KAAK,gBAAgB,WAAW,EAAE;AACpC,UAAO,MAAM,yBAAyB,cAAc,mCAAmC;AACvF,UAAO;;AAGT,MAAI,MAAM,WAAW,EAKnB;OAAI,WAAW,SAAS;AAEtB,SAAK,MAAM,WAAW,SAAS,WAAW,KAAK,mBAAmB,SAAS,CAAC;AAC5E,SAAK,MAAM,WAAW,SAAS,OAAO,KAAK,eAAe,SAAS,CAAC;;SAEjE;AAEL,QAAK,MAAM,YAAY,WAAW,KAAK,mBAAmB,SAAS,CAAC;AACpE,QAAK,MAAM,YAAY,OAAO,KAAK,eAAe,SAAS,CAAC;;EAK9D,MAAM,aAAa,WAAW;AAC9B,MAAI,cAAc,WAAW,WAAW;AACtC,QAAK,MAAM,WAAW,WAAW,QAAQ,KAAK,sBAAsB,SAAS,CAAC;AAC9E,UAAO,MAAM,2DAA2D,gBAAgB;;AAG1F,OAAK,oBAAoB,WAAW;AACpC,SAAO,MAAM,yBAAyB,cAAc,2BAA2B;AAE/E,SAAO;;CAGT,AAAQ,kBAAkB,EACxB,KACA,KACA,iBACA,YAMO;AAGP,MAAI,iBAAiB,EAAE;AACrB,UAAO,MACL,2GACD;AACD,UAAO,gBAAgB,KAAK,KAAK;;EAGnC,MAAM,SAAS,IAAI,UAAU;EAC7B,MAAM,MAAM,IAAI,OAAO;EACvB,MAAM,SAAS,IAAI,OAAO;EAC1B,MAAM,eAAe,KAAK,mBAAmB,UAAU,OAAO;AAG9D,MAAI,wBAAwB,IAAI,IAAI,wBAAwB,OAAO,EAAE;AACnE,UAAO,MAAM,2DAA2D;AACxE,UAAO,gBAAgB,KAAK,KAAK;;AAInC,MAAI,KAAK,gBAAgB,yBAAyB,QAAQ,KAAK,IAAI,QAAQ,EAAE;AAC3E,UAAO,MACL,qEAAqE,OAAO,GAAG,MAChF;AACD,UAAO,gBAAgB,KAAK,KAAK;;AAInC,MAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;GAEtB,0BAA0B;AACxB,UAAM,IAAI,MACR,iFACD;;GAEH,iBAAiB;GACjB,yBAAyB;AAGvB,QAAI,IAAI,QAAQ,mBACd,QAAO,IAAI,QAAQ;IAKrB,MAAM,aAAa;KACjB;KACA,KAHc,GAAG,aAAa,KAAK,IAAI,QAAQ,QAAQ,cAAc;KAIrE;KACA,SAAS,IAAI;KACb,aAAa,IAAI;KACjB,eAAe,IAAI,QAAQ;KAC3B,YAAY,IAAI,QAAQ;KACzB;IAGD,MAAM,gBAAgB,KAAK,YAAY,0BAA0B,IAAI;AACrE,QAAI,CAAC,eAAe;AAClB,YAAO,MAAM,sDAAsD,IAAI,QAAQ;AAE/E,YAAO,gBAAgB,KAAK,KAAK;;AAGnC,WAAO,MAAM,iDAAiD,cAAc;AAI5E,QADoB,KAAK,YAAY,0BAA0B,IAAI,CAEjE,KAAI;KACF,MAAM,UAAU,KAAK,UAAU,mBAAmB,cAAc;AAChE,mBAAc,WAAW,eAAe,QAAQ;AAChD,YAAO,MAAM,6DAA6D,gBAAgB;aACnF,OAAO;AACd,YAAO,MAAM,4DAA4D,MAAM;;IAInF,MAAM,uBAAuB,UAAU,wBAAwB,cAAc;AAE7E,QAAI,CAAC,qBAEH,OAAM,IAAI,MAAM,wCAAwC;AAG1D,WAAOC,sBAAQ,KAAK,4BAA4B;AAC9C,YAAO,UAAU,qBACf,KAAK,YACC,gBAAgB,KAAK,KAAK,EAChC;MACE,MAAM,GAAG;MACT,MAAMC,uBAAS;MACf,aAAa;MACb,WAAW;MACX,aAAa,YAAY;MACzB,qBAAqB,KAAK;MAC1B;MACA,mBAAmB,EACjB,SAAS,EACP,iBAAiB,GAClB,EACF;MACD,eAAe;MAChB,GACA,aAAa;AAEZ,aAAO,KAAK,4BAA4B;OACtC;OACA;OACA;OACA;OACA;OACA,cAAc,EACZ,SAAS,EACP,iBAAiB,GAClB,EACF;OACD,UAAU;OACX,CAAC;OAEL;MACD;;GAEL,CAAC;WACO,KAAK,SAAS,cAAc,QAAQ;AAE7C,OAAI,OAAO,aAAa,KAAK,aAAa,CAAC,CAAC,IAAI,QAAQ,iCACtD,QAAO,gBAAgB,KAAK,KAAK;AAGnC,UAAO,MAAM,kDAAkD,OAAO,GAAG,MAAM;AAC/E,UAAO,iBAAiB;IACtB,4BAA4B,gBAAgB,KAAK,KAAK;IACtD,oBAAoB,EAAE,oBAAoB;KAExC,MAAM,UAAU,GAAG,aAAa,KAAK,IAAI,QAAQ,QAAQ,cAAc;KACvE,MAAM,kBAAkB,EAAE,GAAG,IAAI,SAAS;AAY1C,YAAO,KAAK,gBAAgB,CAAC,SAAS,QAAQ;AAC5C,UAAI,IAAI,aAAa,KAAK,kBACxB,QAAO,gBAAgB;OAEzB;KACF,MAAM,aAAa;MACjB;MACA,KAAK;MACL;MACA,SAAS;MACT,aAAa,IAAI;MACjB,eAAe,IAAI,QAAQ;MAC3B,YAAY,IAAI,QAAQ;MACzB;AAED,YAAO,MACL,oEAAoE,KAAK,UAAU,WAAW,GAC/F;AAED,YAAO,UAAU,qBACf,KAAK,YACC,gBAAgB,KAAK,KAAK,EAChC;MACE,MAAM,GAAG;MACT,MAAMA,uBAAS;MACf,aAAa;MACb,aAAa,YAAY;MACzB,WAAW;MACX,qBAAqB,KAAK;MAC1B;MACA,mBAAmB,EACjB,SAAS,EACP,iBAAiB,GAClB,EACF;MACD;MACD,GACA,aAAa;AACZ,aAAO,KAAK,4BAA4B;OACtC;OACA;OACA;OACA;OACA;OACA,cAAc,EACZ,SAAS,EACP,iBAAiB,GAClB,EACF;OACD,UAAU;OACX,CAAC;OAEL;;IAEH,UAAUA,uBAAS;IACpB,CAAC;QAGF,QAAO,gBAAgB,KAAK,KAAK;;;;;;;;;;;;CAcrC,AAAQ,4BAA4B,EAClC,KACA,KACA,iBACA,UACA,YACA,cACA,YAiBC;EACD,MAAM,OAAO;EACb,MAAM,eAAe,KAAK,mBAAmB,UAAU,OAAO;AAE9D,wBAAQ,KAAK,SAAS,SAAS,IAAI;AACnC,wBAAQ,KAAK,SAAS,SAAS,IAAI;EAGnC,IAAIC,qBAA0B;AAM9B,OAAK,0BAA0B,KAAK,UAAU,YAAY,eAAe,sBAAsB;AAC7F,wBAAqB;IACrB;EAGF,MAAM,cAAc,IAAI,IAAI,KAAK,IAAI;EACrC,MAAMC,iBAAsC,EAAE;EAG9C,MAAM,gBAAgB,IAAI,OAAO,KAAK,IAAI;AAC1C,MAAI,cACF,KAAI,QAAQ,SAAU,OAAwB,UAAgB,UAAgB;AAC5E,OAAI,MACF,gBAAe,KAAK,MAAM;AAE5B,UAAO,cAAc,KAAK,MAAM,OAAO,UAAU,SAAS;;AAI9D,MAAI,MAAM,SAAU,OAAY,UAAgB,UAAgB;GAC9D,MAAM,aAAa,IAAI;AAGvB,OAAI,MACF,gBAAe,KAAK,MAAM;AAG5B,UAAO,MACL,mDAAmD,WAAW,IAAI,UAAU,cAAc,CAAC,GAC5F;AAGD,WAAQ,SAAS,YAAY;IAG3B,MAAM,oBAAoB,iBADP,IAAI,aAAc,IAAI,YAAY,GAA8B,EAAE,CAC/B;IAEtD,MAAMC,cAAqC;KACzC;KACA,eAAe,IAAI;KACnB,SAAS;KACV;AAGD,QAAI,eAAe,SAAS,EAC1B,KAAI;KACF,MAAM,iBAAiB,cAAc,eAAe;KACpD,MAAM,kBAAkB,YAAY,UAAU;AAQ9C,iBAAY,OANQ,MAAM,gBAAgB;MACxC,YAAY;MACZ;MACD,CAAC;AAIF,iBAAY,WAAW,eAAe;aAC/B,OAAO;AACd,YAAO,MAAM,gEAAgE,MAAM;;AAIvF,QAAI;KAGF,MAAMC,WAAyB;MAC7B,SAAS,SAAS;MAClB,QAAQ,SAAS;MACjB,MAAMJ,uBAAS;MACf,UAAU;MACV,YAAY;MACZ;MACD;AACD,UAAK,gBAAgB,gBAAgB,SAAS;AAE9C,eAAU,kBAAkB,SAAS,MAAM;MACzC,YAAY,SAAS;MACrB,aAAa,SAAS;MACtB,oBAAoB;OAClB,MAAM;QACJ,UAAU,aAAa;QACvB,aAAa,eAAe,SAAS,aAAa,UAAU,mBAAmB,GAAG;QACnF;OACD,SAAS,EACP,iBAAiB,GAClB;OACF;MACD,UAAU,EACR,UAAU,cAAc,WAAW,SAAS,QAAQ,EACrD;MACD,GAAI,SAAS,qBAAqB,EAChC,mBAAmB,SAAS,mBAC7B;MACF,CAAC;AAGF,mBAAc,aAAa,SAAS,QAAQ;KAE5C,MAAM,SACJ,cAAc,MACV;MAAE,MAAMK,6BAAe;MAAO,SAAS,QAAQ;MAAc,GAC7D,EAAE,MAAMA,6BAAe,IAAI;AAEjC,eAAU,UAAU,SAAS,MAAM,OAAO;KAI1C,MAAM,cAAc,eAAe,YAAY,UAAU,mBAAmB,GAAG;AAC/E,SAAI,eAAe,CAAC,yBAAyB,IAAI,YAAY,EAAE;AAE7D,MAD6B,qBAAqB,aAAa,CAC1C,WAAW,SAAS,QAAQ;AACjD,aAAO,MACL,wCAAwC,SAAS,QAAQ,iDAAiD,eAC1G,EAAE,wBAAwB,MAAM,KAAK,yBAAyB,EAAE,CACjE;;AAGH,eAAU,QAAQ,SAAS,KAAK;aACzB,OAAO;AACd,YAAO,MAAM,mEAAmE,MAAM;;AAGxF,QAAI,KAAK,SAAS,cAAc,OAC9B,KAAI;KACF,MAAM,MAAM,oBAAoB,iBAAiB;KACjD,MAAM,gBAAgB,UAAU,yBAAyB,IAAI,SAAS;KAGtE,IAAI,cAAc;AAClB,SAAI;MACF,MAAM,IAAI,IAAI,IAAI,mBAAmB,OAAO,WAAW,IAAI;AAC3D,oBAAc,KAAK,mBAAmB,EAAE,YAAY,QAAW,aAAa;aACtE;KAGR,MAAM,EAAE,QAAQ,aAAa,kBAAkB,mBAC7C,iBAAiB,sBAAsB,oBAAoB;MACzD,MAAM;OACJ,UAAU,aAAa;OACvB,aAAa,eACV,mBAAmB,WAAW,mBAAmB,QAAQ,mBACxD,GACH;OACF;MACD,SAAS,EACP,iBAAiB,GAClB;MACF,CAAC;KAEJ,MAAM,EAAE,QAAQ,cAAc,kBAAkB,oBAC9C,iBAAiB,sBAAsB,aAAa;MAClD,MAAM;OACJ,UAAU,aAAa;OACvB,aAAa,eAAe,YAAY,QAAQ,mBAAmB,GAAG;OACvE;MACD,SAAS,EACP,iBAAiB,GAClB;MACF,CAAC;KAEJ,MAAM,YAAY;MAChB,SAAS;MACT,QAAQ,SAAS;MACjB,cAAc;MACd,MAAM,GAAG,mBAAmB,UAAU,WAAW;MACjD;MACA,qBAAqB;MACrB,eAAe,mBAAmB,UAAU,WAAW;MACvD,YAAY;MACZ;MACA;MACA;MACA,iBAAiB,iBAAiB,0BAA0B,YAAY;MACxE,kBAAkB,iBAAiB,0BAA0B,aAAa;MAC1E;MACA;MAEA,MAAML,uBAAS;MACf,aAAa,YAAY;MACzB,QAAQ;OACN,MAAM,cAAc,MAAM,WAAW,QAAQ,WAAW;OACxD,SAAS,cAAc,MAAM,QAAQ,eAAe;OACrD;MACD,WAAW;OACT,SAAS,KAAK,MAAM,IAAI,SAAS,GAAG,IAAK;OACzC,OAAQ,IAAI,SAAS,GAAG,MAAQ;OACjC;MACD,UAAU;OAAE,SAAS;OAAG,OAAO;OAAG;MAClC,YAAY;MACZ,eAAe;MACf,UAAU;MACX;AAED,WAAM,KAAK,UAAU,yBAAyB,UAAU;aACjD,GAAG;AACV,YAAO,MAAM,mEAAmE,EAAE;;KAGtF;AAEF,UAAO,YAAY,KAAK,MAAM,OAAO,UAAU,SAAS;;AAI1D,MAAI,GAAG,UAAU,UAAiB;AAChC,OAAI;AACF,WAAO,MACL,+CAA+C,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GAC3F;AACD,cAAU,QAAQ,SAAS,MAAM;KAC/B,MAAMK,6BAAe;KACrB,SAAS,MAAM;KAChB,CAAC;YACKC,SAAO;AACd,WAAO,MAAM,4CAA4CA,QAAM;;IAEjE;AAEF,MAAI,GAAG,UAAU,UAAiB;AAChC,OAAI;AACF,WAAO,MACL,gDAAgD,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GAC5F;AACD,cAAU,QAAQ,SAAS,MAAM;KAC/B,MAAMD,6BAAe;KACrB,SAAS,MAAM;KAChB,CAAC;YACKC,SAAO;AACd,WAAO,MAAM,4CAA4CA,QAAM;;IAEjE;AAGF,SAAO,gBAAgB,KAAK,KAAK;;;;;;;;;;;;;;;;CAiBnC,AAAQ,0BACN,KACA,UACA,YASA,cACA,gBACM;EACN,MAAMC,oBAA8B,EAAE;EACtC,IAAIC,wBAA2D;EAG/D,MAAM,eAAe,IAAI,KAAK,KAAK,IAAI;AACvC,MAAI,OAAO,SAAS,KAAK,MAAe;GACtC,MAAM,QAAQ,aAAa,KAAK;AAChC,OACE,UACC,0BAA0B,UAAU,0BAA0B,kBAC/D;AACA,4BAAwB;AACxB,sBAAkB,KAAK,OAAO,KAAK,MAAM,CAAC;;AAE5C,UAAO;;AAIT,MAAI,KAAK,gBAAgB;AACvB,OAAI,YAAY,SAAS,UAA2B;AAClD,QACE,UACC,0BAA0B,UAAU,0BAA0B,kBAC/D;AACA,6BAAwB;AACxB,uBAAkB,KAAK,OAAO,KAAK,MAAM,CAAC;;KAE5C;IACF;AAGF,MAAI,YAAY,OAAO,OAAO,UAA4B;AACxD,OAAI,MACF,mBAAkB,KAAK,OAAO,KAAK,MAAM,CAAC;AAG5C,OAAI,kBAAkB,SAAS,EAC7B,KAAI;IACF,MAAM,aAAa,OAAO,OAAO,kBAAkB;IAGnD,MAAM,cAAc,MAAM,gBAAgB;KACxC;KACA,iBAAiB,IAAI,QAAQ;KAC9B,CAAC;IAGF,MAAMC,oBAA0C;KAC9C,GAAG;KACH,MAAM;KACN,UAAU,WAAW;KACtB;AAED,QAAI,eACF,gBAAe,kBAAkB;AAInC,cAAU,kBAAkB,SAAS,MAAM;KACzC,YAAY;KACZ,mBAAmB;MACjB,GAAG;MACH,MAAM;OACJ,UAAU,aAAa;OACvB,aAAa,eAAe,IAAI,QAAQ,mBAAmB,GAAG;OAC/D;MACF;KACF,CAAC;AAEF,WAAO,MACL,mDAAmD,IAAI,OAAO,GAAG,IAAI,IAAI,IAAI,WAAW,OAAO,QAChG;YACM,OAAO;AACd,WAAO,MAAM,wDAAwD,MAAM;;IAG/E;;CAGJ,AAAQ,0BACN,KACA,UACA,YACA,cACA,gBACM;EACN,MAAMC,oBAAyC,EAAE;EACjD,IAAI,sBAAsB;EAG1B,MAAM,gBAAgB,IAAI,OAAO,KAAK,IAAI;AAC1C,MAAI,cACF,KAAI,QAAQ,SAAU,OAAY,UAAgB,UAAyB;AACzE,OAAI,SAAS,CAAC,oBACZ,mBAAkB,KAAK,OAAO,SAAS,MAAM,GAAG,QAAQ,OAAO,KAAK,OAAO,SAAS,CAAC;AAEvF,UAAO,cAAc,KAAK,MAAM,OAAO,UAAU,SAAS;;EAK9D,MAAM,cAAc,IAAI,KAAK,KAAK,IAAI;AACtC,MAAI,YACF,KAAI,MAAM,SAAU,OAAa,UAAgB,UAA+B;AAE9E,OAAI,SAAS,CAAC,oBACZ,mBAAkB,KAAK,OAAO,SAAS,MAAM,GAAG,QAAQ,OAAO,KAAK,OAAO,SAAS,CAAC;AAIvF,OAAI,kBAAkB,SAAS,KAAK,CAAC,qBAAqB;AACxD,0BAAsB;AACtB,KAAC,YAAY;AACX,SAAI;MACF,MAAM,aAAa,OAAO,OACxB,kBAAkB,KAAK,YACrB,OAAO,SAASC,QAAM,GAAGA,UAAQ,OAAO,KAAKA,QAAM,CACpD,CACF;MAGD,MAAM,cAAc,MAAM,gBAAgB,EACxC,YACD,CAAC;MAGF,MAAMC,oBAA0C;OAC9C,GAAG;OACH,MAAM;OACN,UAAU,WAAW;OACtB;AAGD,UAAI,eACF,gBAAe,kBAAkB;AAInC,gBAAU,kBAAkB,SAAS,MAAM;OACzC,YAAY;OACZ,mBAAmB;QACjB,GAAG;QACH,MAAM;SACJ,UAAU,aAAa;SACvB,aAAa,eACV,WAAW,QAAQ,mBAAyC,GAC9D;SACF;QACF;OACF,CAAC;AAEF,aAAO,MACL,mDAAmD,IAAI,OAAO,GAAG,IAAI,KAAK,IAAI,WAAW,OAAO,QACjG;cACM,OAAO;AACd,aAAO,MAAM,wDAAwD,MAAM;;QAE3E;;AAGN,UAAO,YAAY,KAAK,MAAM,OAAO,UAAU,SAAS;;;CAS9D,AAAQ,6BACN,iBACA,MACA,UACA,YACA,cACA;EACA,MAAM,MAAM,gBAAgB,MAAM,MAAM,KAAK;EAG7C,IAAI,qBAAqB;AAMzB,OAAK,0BAA0B,KAAK,UAAU,YAAY,eAAe,sBAAsB;AAC7F,wBAAqB;IACrB;AAGF,MAAI,GAAG,aAAa,QAAyB;AAC3C,UAAO,MACL,iDAAiD,IAAI,WAAW,IAAI,UAAU,cAAc,CAAC,GAC9F;GAGD,MAAMC,cAAqC;IACzC,YAAY,IAAI;IAChB,eAAe,IAAI;IACnB,SAAS,KAAK,8BAA8B,IAAI,WAAW;IAC3D,aAAa,IAAI;IACjB,kBAAkB,IAAI;IACtB,kBAAkB,IAAI;IACtB,UAAU,IAAI;IACd,UAAU,IAAI;IACf;GAID,MAAMC,iBAA2B,EAAE;GACnC,IAAIN,wBAA2D;GAG/D,MAAM,eAAe,IAAI,MAAM,KAAK,IAAI;AACxC,OAAI,aACF,KAAI,OAAO,SAAS,KAAK,MAAe;IACtC,MAAM,QAAQ,aAAa,KAAK;AAChC,QACE,UACC,0BAA0B,UAAU,0BAA0B,kBAC/D;AACA,6BAAwB;AACxB,oBAAe,KAAK,OAAO,KAAK,MAAM,CAAC;;AAEzC,WAAO;;AAKX,OAAI,KAAK,gBAAgB;AACvB,QAAI,GAAG,SAAS,UAA2B;AACzC,SACE,UACC,0BAA0B,UAAU,0BAA0B,kBAC/D;AACA,8BAAwB;AACxB,qBAAe,KAAK,OAAO,KAAK,MAAM,CAAC;;MAEzC;KACF;AAGF,OAAI,GAAG,OAAO,OAAO,UAA4B;AAE/C,QAAI,SAAS,OAAO,UAAU,WAC5B,gBAAe,KAAK,OAAO,KAAK,MAAM,CAAC;AAGzC,QAAI;AACF,SAAI,eAAe,SAAS,GAAG;MAE7B,MAAM,iBAAiB,OAAO,OAAO,eAAe;MAGpD,MAAM,aAAa,KAAK,8BAA8B,IAAI,WAAW;AAGrE,kBAAY,UAAU;MAGtB,MAAM,kBAAkB,WAAW;AAOnC,kBAAY,OANQ,MAAM,gBAAgB;OACxC,YAAY;OACZ;OACD,CAAC;AAIF,kBAAY,WAAW,eAAe;;AAIxC,UAAK,2BAA2B;MAC9B;MACA;MACA,YAAY,IAAI,cAAc;MAC9B,oBAAoB;OAClB,MAAM;QACJ,UAAU,aAAa;QACvB,aAAa,eAAe,YAAY,QAAQ,mBAAmB,GAAG;QACvE;OACD,SAAS,EACP,iBAAiB,GAClB;OACF;MACD,YAAY;MACb,CAAC;aACK,OAAO;AACd,YAAO,MAAM,yDAAyD,MAAM;;KAE9E;IACF;AAEF,MAAI,GAAG,UAAU,UAAiB;AAChC,OAAI;AACF,WAAO,MACL,6CAA6C,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GACzF;IAGD,MAAMO,mBAA0C;KAC9C,SAAS,EAAE;KACX,aAAa;KACb,kBAAkB;KAClB,kBAAkB;KAClB,UAAU;KACV,UAAU;KAEV,WAAW,MAAM,QAAQ;KACzB,cAAc,MAAM;KACrB;AAGD,SAAK,2BAA2B;KAC9B;KACA,aAAa;KACb,YAAY;KACZ,oBAAoB,EAClB,SAAS,EACP,iBAAiB,GAClB,EACF;KACD,YAAY;KACb,CAAC;AAEF,cAAU,QAAQ,SAAS,MAAM;KAC/B,MAAMV,6BAAe;KACrB,SAAS,MAAM;KAChB,CAAC;YACKC,SAAO;AACd,WAAO,MAAM,4CAA4CA,QAAM;;IAEjE;AAEF,SAAO;;;;;CAMT,AAAQ,2BAA2B,EACjC,UACA,aACA,YACA,oBACA,cAOO;EAEP,MAAM,qBAAqB,KAAK,mBAAmB,WAAW,UAAU,OAAO;EAC/E,MAAMF,WAAyB;GAC7B,SAAS,SAAS;GAClB,QAAQ,SAAS;GACjB,MAAMJ,uBAAS;GACf,UAAU;GACV;GACA;GACD;AAED,OAAK,gBAAgB,gBAAgB,SAAS;AAE9C,YAAU,kBAAkB,SAAS,MAAM;GACzC,YAAY,SAAS;GACrB,aAAa,SAAS;GACtB;GACA,mBAAmB,SAAS,oBAAoB,SAAS,oBAAoB;GAC9E,CAAC;EAGF,MAAM,SACJ,cAAc,MACV;GAAE,MAAMK,6BAAe;GAAO,SAAS,QAAQ;GAAc,GAC7D,EAAE,MAAMA,6BAAe,IAAI;AAEjC,YAAU,QAAQ,SAAS,MAAM,OAAO;;CAG1C,AAAQ,8BAA8B,YAA8C;EAClF,MAAMW,UAAkC,EAAE;AAC1C,OAAK,IAAI,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK,GAAG;GAC7C,MAAM,MAAM,WAAW,GAAG,aAAa;AAEvC,WAAQ,OADM,WAAW,IAAI;;AAG/B,SAAO;;CAGT,AAAQ,mBAAmB,UAAwB;EACjD,MAAM,OAAO;AAEb,UAAQ,oBAA8B;AACpC,UAAO,SAAyB,GAAG,MAAa;IAE9C,IAAIC;AACJ,QAAI,OAAO,KAAK,OAAO,UAAU;KAE/B,MAAM,MAAM,IAAI,IAAI,KAAK,GAAG;AAC5B,sBAAiB;MACf,UAAU,IAAI;MACd,UAAU,IAAI;MACd,MAAM,IAAI,OAAO,SAAS,IAAI,KAAK,GAAG;MACtC,MAAM,IAAI,WAAW,IAAI;MACzB,QAAQ,KAAK,IAAI,UAAU;MAC3B,SAAS,KAAK,IAAI,WAAW,EAAE;MAChC;UAED,kBAAiB,KAAK,MAAM,EAAE;IAEhC,MAAM,SAAS,eAAe,UAAU;IACxC,MAAM,kBAAkB,KAAK,mBAC3B,eAAe,YAAY,QAC3B,SACD;AAED,QAAI,KAAK,SAAS,cAAc,QAAQ;KACtC,MAAM,aAAa,kBAAkB,CAAC,sBAAsB,CAAC;AAE7D,YAAO,iBAAiB;MACtB,0BAA0B;AAGxB,cAAO,KAAK,YAAY,4BAA4B;QAClD;QACA;QACA,UAAU;QACV;QACD,CAAC;;MAEJ,iBAAiB;MACjB,yBAAyB;OAEvB,MAAM,UAAU,iBAAiB,eAAe,WAAW,EAAE,CAAC;OAC9D,MAAMC,aAAmC;QACvC;QACA,MAAM,eAAe,QAAQ;QAC7B;QACA,UAAU;QACV,UAAU,eAAe,YAAY,eAAe,QAAQ;QAC5D,MAAM,eAAe,OAAO,OAAO,eAAe,KAAK,GAAG;QAC1D,SAAS,eAAe,WAAW;QACpC;AAGD,cAAO,UAAU,qBACf,KAAK,YACC,gBAAgB,MAAM,MAAM,KAAK,EACvC;QACE,MAAM,eAAe,QAAQ,GAAG,gBAAgB,aAAa,CAAC,GAAG;QACjE,MAAMlB,uBAAS;QACf,aAAa;QACb,aAAa,YAAY;QACzB,qBAAqB,KAAK;QAC1B,WAAW;QACX;QACA,eAAe;QAChB,GACA,aAAa;AACZ,eAAO,KAAK,YAAY,4BAA4B;SAClD;SACA;SACA,UAAU;SACV;SACA;SACA;SACD,CAAC;SAEL;;MAEJ,CAAC;eACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,gBAAgB,MAAM,MAAM,KAAK;KAC7D,oBAAoB,EAAE,oBAAoB;MACxC,MAAM,UAAU,iBAAiB,eAAe,WAAW,EAAE,CAAC;AAG9D,UACE,QAAQ,sBAAsB,UAC9B,wBAAwB,eAAe,KAAK,CAE5C,QAAO,gBAAgB,MAAM,MAAM,KAAK;MAG1C,MAAMkB,aAAmC;OACvC;OACA,MAAM,eAAe,QAAQ;OAC7B;OACA,UAAU;OACV,UAAU,eAAe,YAAY,eAAe,QAAQ;OAC5D,MAAM,eAAe,OAAO,OAAO,eAAe,KAAK,GAAG;OAC1D,SAAS,eAAe,WAAW;OACpC;AAED,aAAO,UAAU,qBACf,KAAK,YACC,gBAAgB,MAAM,MAAM,KAAK,EACvC;OACE,MAAM,eAAe,QAAQ,GAAG,gBAAgB,aAAa,CAAC,GAAG;OACjE,MAAMlB,uBAAS;OACf,aAAa;OACb,aAAa,YAAY;OACzB,qBAAqB,KAAK;OAC1B,WAAW;OACX;OACA,mBAAmB,EACjB,SAAS,EACP,iBAAiB,GAClB,EACF;OACD;OACD,GACA,aAAuB;AACtB,cAAO,KAAK,6BACV,iBACA,MACA,UACA,YACA,EACE,SAAS,EACP,iBAAiB,GAClB,EACF,CACF;QAEJ;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAGF,QAAO,gBAAgB,MAAM,MAAM,KAAK;;;;CAMhD,AAAQ,eAAe,UAAwB;EAC7C,MAAM,OAAO;AAEb,UAAQ,gBAA0B;AAChC,UAAO,SAAyB,GAAG,MAAa;IAE9C,IAAIiB;AACJ,QAAI,OAAO,KAAK,OAAO,UAAU;KAE/B,MAAM,MAAM,IAAI,IAAI,KAAK,GAAG;AAC5B,sBAAiB;MACf,UAAU,IAAI;MACd,UAAU,IAAI;MACd,MAAM,IAAI,OAAO,SAAS,IAAI,KAAK,GAAG;MACtC,MAAM,IAAI,WAAW,IAAI;MACzB,SAAS,KAAK,IAAI,WAAW,EAAE;MAChC;UAED,kBAAiB,KAAK,MAAM,EAAE;IAEhC,MAAM,SAAS;IACf,MAAM,kBAAkB,KAAK,mBAC3B,eAAe,YAAY,QAC3B,SACD;AAGD,QAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;KACtB,0BAA0B;AAGxB,aAAO,KAAK,YAAY,4BAA4B;OAClD;OACA;OACA,UAAU;OACV;OACD,CAAC;;KAEJ,iBAAiB;KACjB,yBAAyB;MAEvB,MAAM,UAAU,iBAAiB,eAAe,WAAW,EAAE,CAAC;MAC9D,MAAMC,aAAmC;OACvC;OACA,MAAM,eAAe,QAAQ;OAC7B;OACA,UAAU;OACV,UAAU,eAAe,YAAY,eAAe,QAAQ;OAC5D,MAAM,eAAe,OAAO,OAAO,eAAe,KAAK,GAAG;OAC1D,SAAS,eAAe,WAAW;OACpC;AAGD,aAAO,UAAU,qBACf,KAAK,YACC,YAAY,MAAM,MAAM,KAAK,EACnC;OACE,MAAM,eAAe,QAAQ,GAAG,gBAAgB,aAAa,CAAC,GAAG;OACjE,MAAMlB,uBAAS;OACf,aAAa;OACb,aAAa,YAAY;OACzB,qBAAqB,KAAK;OAC1B,WAAW;OACX;OACA,eAAe;OAChB,GACA,aAAa;AACZ,cAAO,KAAK,YAAY,4BAA4B;QAClD;QACA;QACA,UAAU;QACV;QACA;QACD,CAAC;QAEL;;KAEJ,CAAC;aACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,YAAY,MAAM,MAAM,KAAK;KACzD,oBAAoB,EAAE,oBAAoB;MACxC,MAAM,UAAU,iBAAiB,eAAe,WAAW,EAAE,CAAC;AAG9D,UACE,QAAQ,sBAAsB,UAC9B,wBAAwB,eAAe,KAAK,CAE5C,QAAO,YAAY,MAAM,MAAM,KAAK;MAGtC,MAAMkB,aAAmC;OACvC;OACA,MAAM,eAAe,QAAQ;OAC7B;OACA,UAAU;OACV,UAAU,eAAe,YAAY,eAAe,QAAQ;OAC5D,MAAM,eAAe,OAAO,OAAO,eAAe,KAAK,GAAG;OAC1D,SAAS,eAAe,WAAW;OACpC;AAED,aAAO,UAAU,qBACf,KAAK,YACC,YAAY,MAAM,MAAM,KAAK,EACnC;OACE,MAAM,eAAe,QAAQ,GAAG,gBAAgB,aAAa,CAAC,GAAG;OACjE,MAAMlB,uBAAS;OACf,aAAa;OACb,aAAa,YAAY;OACzB,qBAAqB,KAAK;OAC1B,WAAW;OACX;OACA,mBAAmB,EACjB,SAAS,EACP,iBAAiB,GAClB,EACF;OACD;OACD,GACA,aAAuB;AACtB,cAAO,KAAK,6BACV,aACA,MACA,UACA,YACA,EACE,SAAS,EACP,iBAAiB,GAClB,EACF,CACF;QAEJ;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAGF,QAAO,YAAY,MAAM,MAAM,KAAK;;;;CAM5C,AAAQ,sBAAsB,UAAwB;EACpD,MAAM,OAAO;AAEb,UAAQ,iBAA2B;AACjC,UAAO,SAAwB,WAAmB,GAAG,MAAa;AAChE,QAAI,cAAc,WAAW;AAE3B,SAAI,KAAK,SAAS,cAAc,QAC9B;UACE,CAAC,aAAa;OACZ,cAAc,KAAK,UAAU,iBAAiB;OAC9C,YAAY,KAAK,UAAU,YAAY;OACxC,CAAC,CAEF,QAAO,aAAa,MAAM,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;;KAIzD,MAAM,MAAM,KAAK;KACjB,MAAM,MAAM,KAAK;AAEjB,YAAO,KAAK,kBAAkB;MAC5B;MACA;MACA,uBAAuB;AACrB,cAAO,aAAa,MAAM,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;;MAEvD;MACD,CAAC;;AAGJ,WAAO,aAAa,MAAM,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;;;;CAK3D,AAAQ,mBAAmB,UAA8B,UAAsC;AAC7F,MAAI,CAAC,SACH,QAAO;EAGT,MAAM,aAAa,SAAS,aAAa,CAAC,QAAQ,MAAM,GAAG;AAC3D,MAAI,eAAe,UAAU,eAAe,QAC1C,QAAO;AAGT,SAAO;;CAGT,AAAQ,MACN,QACA,cACA,SACiB;AACjB,SAAO,KAAK,QAAQ,cAAc,QAAQ;;;;;;;;;;;ACn3C9C,IAAa,qBAAb,cAAwC,sBAAsB;CAK5D,YAAY,SAAmC,EAAE,EAAE;AACjD,QAAM,OAAO,OAAO;OAHd,kBAAkB;AAIxB,OAAK,OAAO,OAAO,QAAQ,cAAc;;CAG3C,OAAsC;AAEpC,OAAK,iBAAiB;AACtB,SAAO,EAAE;;CAGX,AAAQ,kBAAwB;AAM9B,MAAI,KAAK,SAAS,cAAc,YAAY,CAAC,KAAK,QAAQ,QACxD;AAGF,OAAK,qBAAqB,QAAQ;EAGlC,MAAM,WAAW,IAAI,MAAM,KAAK,oBAAoB;GAClD,MAAM,QAAQ,UAAU,aAAa;AACnC,WAAO,KAAK,iBAAiB,QAAQ,SAAmB;;GAE1D,MAAM,QAAQ,UAAU,OAAO,aAAa;AAE1C,WAAO,YAAsB;AAC7B,WAAO;;GAET,iBAAiB,QAAQ,aAAa;AACpC,WAAO,OAAO;AACd,WAAO;;GAET,UAAU,WAAW;AACnB,WAAO,QAAQ,QAAQ,OAAO;;GAEhC,2BAA2B,QAAQ,aAAa;AAC9C,WAAO,QAAQ,yBAAyB,QAAQ,SAAS;;GAE3D,MAAM,QAAQ,aAAa;AACzB,WAAO,QAAQ,IAAI,QAAQ,SAAS;;GAEvC,CAAC;AAGF,UAAQ,MAAM;;CAGhB,AAAQ,iBAAiB,QAA4B,KAAiC;AAEpF,MAAI,KAAK,gBACP,QAAO,OAAO;AAGhB,MAAI,CAAC,cAAc,aAAa,CAAC,YAAY,CAE3C,QAAO,OAAO;AAGhB,OAAK,kBAAkB;AACvB,MAAI;AACF,UAAO,KAAK,uBAAuB,QAAQ,IAAI;YACvC;AACR,QAAK,kBAAkB;;;CAI3B,AAAQ,uBAAuB,QAA4B,KAAiC;EAC1F,IAAImB,kBAAmC;AACvC,MAAI;AACF,qBAAkB,UAAU,oBAAoB;WACzC,OAAO;AACd,UAAO,MAAM,uDAAuD,MAAM;;AAG5E,MAAI,CAAC,gBACH,QAAO,OAAO;AAGhB,MAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,KAAK,kBAAkB,QAAQ,IAAI;WACjC,KAAK,SAAS,cAAc,OACrC,QAAO,KAAK,kBAAkB,iBAAiB,QAAQ,IAAI;MAE3D,QAAO,OAAO;;CAIlB,AAAQ,kBAAkB,QAA4B,KAAiC;EACrF,MAAM,gBAAgB,UAAU,yBAAyB;AACzD,MAAI,CAAC,cACH,QAAO,OAAO;EAGhB,MAAM,SAAS,cAAc,UAAU,eAAe,IAAI;AAC1D,MAAI,QAAQ;AACV,UAAO,MAAM,qBAAqB,IAAI,aAAa,cAAc,IAAI,SAAS;AAC9E,UAAO;;AAGT,SAAO,OAAO;;CAGhB,AAAQ,kBACN,UACA,QACA,KACoB;AACpB,MAAI;AACF,iBAAc,UAAU;IACtB,SAAS,SAAS;IAClB;IACA,OAAO,OAAO,QAAQ;IACvB,CAAC;WACK,OAAO;AACd,UAAO,MAAM,6CAA6C,MAAM;;AAElE,SAAO,OAAO;;;;;;;;;;;;;AC9HlB,IAAa,sBAAb,MAAa,4BAA4B,sBAAsB;CAM7D,YAAY,SAAoC,EAAE,EAAE;AAClD,QAAM,QAAQ,OAAO;OAJf,kBAAkB;AAKxB,OAAK,OAAO,OAAO,QAAQ,cAAc;AACzC,sBAAoB,WAAW;;CAGjC,OAAsC;AAEpC,OAAK,iBAAiB;AACtB,SAAO,EAAE;;CAGX,AAAQ,kBAAwB;AAM9B,MAAI,KAAK,SAAS,cAAc,YAAY,CAAC,KAAK,QAAQ,QACxD;AAGF,OAAK,eAAe,WAAW;EAE/B,MAAM,UAAU,KAAK,MAAM,YAAY,QAAQ,KAAK,gBAAgB,CAAC;AAGrE,UAAQ,MAAM,WAAoB;AAChC,UAAO,IAAI,SAAS,CAAC,SAAS;;AAEhC,UAAQ,QAAQ,KAAK,aAAc,MAAM,KAAK,KAAK,aAAc;AACjE,UAAQ,MAAM,KAAK,aAAc,IAAI,KAAK,KAAK,aAAc;AAG7D,SAAO,eAAe,QAAQ,WAAW,KAAK,aAAc,UAAU;AACtE,SAAO,eAAe,SAAS,OAAO,aAAa,EACjD,QAAQ,aAAkB,oBAAoB,KAAK,cACpD,CAAC;AAEF,SAAO,MAAM,gCAAgC;;CAG/C,OAAO,kBAAiC;AACtC,SAAO,IAAI,oBAAoB,SAAS,cAAe;;CAGzD,AAAQ,gBAAgB,MAAa,mBAA2C;AAE9E,MAAI,KAAK,gBACP,QAAO,KAAK,kBAAkB,MAAM,kBAAkB;AAIxD,MAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,KAAK,kBAAkB,MAAM,kBAAkB;EAGxD,MAAM,kBAAkB,UAAU,oBAAoB;AACtD,MAAI,CAAC,gBACH,QAAO,KAAK,kBAAkB,MAAM,kBAAkB;AAKxD,MADiB,gBAAgB,QAAQ,SAAS,sBAAsB,KACvDC,uBAAS,OACxB,QAAO,KAAK,kBAAkB,MAAM,kBAAkB;AAGxD,OAAK,kBAAkB;AACvB,MAAI;AACF,UAAO,KAAK,kBAAkB,MAAM,kBAAkB;YAC9C;AACR,QAAK,kBAAkB;;;CAI3B,AAAQ,kBAAkB,MAAa,mBAA2C;AAEhF,MAAI,KAAK,WAAW,GAAG;GACrB,MAAM,aAAa,YAAY,2BAA2B;AAC1D,OAAI,YAAY;AACd,WAAO,MACL,qDAAqD,WAAW,aAAa,GAC9E;AACD,WAAO,oBACH,IAAI,KAAK,aAAc,WAAW,SAAS,CAAC,GAC5C,WAAW,UAAU;;;AAK7B,SAAO,KAAK,kBAAkB,MAAM,kBAAkB;;CAGxD,AAAQ,kBAAkB,MAAa,mBAA2C;AAChF,MAAI,mBAAmB;AACrB,OAAI,KAAK,WAAW,EAClB,QAAO,IAAI,KAAK,cAAe;AAEjC,UAAO,IAAK,KAAK,aAAqB,GAAG,KAAK;QAG9C,QAAO,IAAI,KAAK,cAAe,CAAC,UAAU;;CAI9C,AAAQ,iBAAiB;EACvB,MAAM,OAAO;AACb,UAAQ,mBAA8B;GACpC,SAAS,QAAmB,GAAG,MAA4B;IACzD,MAAM,oBAAoB,IAAI,WAAW;AAIzC,QAAI,qBAAqB,IAAI,WAAW,WAAW,IAAI,WAAW,WAAW,MAAM;AACjF,YAAO,MAAM,yCAAyC,IAAI,QAAQ,OAAO;AAMzE,YAAO,QAAQ,UAAU,KAAK,cAAe,MAAM,IAAI,OAAO;;AAGhE,WAAO,KAAK,gBAAgB,MAAM,kBAAkB;;AAEtD,UAAO;;;CAIX,AAAQ,MAAM,QAAa,cAAsB,SAAsC;AACrF,OAAK,QAAQ,cAAc,QAAQ;AACnC,SAAO,OAAO;;;;;;ACvJlB,IAAa,kCAAb,MAA6C;CAM3C,YAAY,EACV,MACA,mBACA,SAKC;AACD,OAAK,2BAAiB,KAAK;AAC3B,OAAK,oBAAoB;AACzB,OAAK,QAAQ;;;;;;AC0BjB,MAAa,0BACX,YAEA,QAAQ,SAAS,YAAY,MAC1B,eAAoB,YAAY,SAAS,sBAC3C;;;;;;;;;;;;;;AC1BH,IAAa,yBAAb,cAA4C,sBAAsB;CAGhE,YAAY,SAAuC,EAAE,EAAE;AACrD,QAAM,WAAW,OAAO;AACxB,OAAK,YAAY,cAAc,aAAa;;CAG9C,OAAsC;EAEpC,MAAM,yBAAyB,IAAI,gCAAgC;GACjE,MAAM;GACN,mBAAmB,CAAC,OAAO;GAE3B,QAAQ,kBAAuB;AAC7B,SAAK,MAAM,eAAe,WAAW,KAAK,iBAAiB,CAAC;AAC5D,WAAO;;GAEV,CAAC;EAGF,MAAM,yBAAyB,IAAI,gCAAgC;GACjE,MAAM;GACN,mBAAmB,CAAC,OAAO;GAC3B,QAAQ,kBAAuB;AAC7B,SAAK,MAAM,eAAe,WAAW,KAAK,iBAAiB,CAAC;AAC5D,SAAK,MAAM,eAAe,eAAe,KAAK,iBAAiB,CAAC;AAChE,WAAO;;GAEV,CAAC;EAEF,MAAM,mBAAmB,IAAI,4BAA4B;GACvD,MAAM;GACN,mBAAmB,CAAC,OAAO;GAC3B,QAAQ,kBAAuB;GAG/B,OAAO,CAAC,uBAAuB;GAChC,CAAC;AAWF,SAAO,CATkB,IAAI,4BAA4B;GACvD,MAAM;GACN,mBAAmB,CAAC,OAAO;GAC3B,QAAQ,kBAAuB;GAG/B,OAAO,CAAC,uBAAuB;GAChC,CAAC,EAEwB,iBAAiB;;;;;CAM7C,AAAQ,kBAAkB;EACxB,MAAM,OAAO;AACb,UAAQ,oBAAyB;AAC/B,UAAO,SAAS,QAAmB,GAAG,MAAa;AACjD,WAAO,KAAK,wBAAwB,WAAW,iBAAiB,MAAM,KAAK;;;;;;;CAQjF,AAAQ,wBACN,YACA,gBACA,MACA,WACK;AACL,MAAI,KAAK,UAAU,SAAS,KAAK,cAAc,QAAQ;AACrD,UAAO,MAAM,wEAAwE;AACrF,UAAO,eAAe,MAAMC,WAAS,KAAK;;EAG5C,IAAIC,kBAAmC;AACvC,MAAI;AACF,qBAAkB,UAAU,oBAAoB;WACzC,OAAO;AACd,UAAO,MAAM,6DAA6D,MAAM;;AAGlF,MAAI,CAAC,iBAAiB;AACpB,UAAO,MACL,sDAAsD,WAAW,oBAClE;AACD,UAAO,eAAe,MAAMD,WAAS,KAAK;;AAG5C,MAAI;AACF,UAAO,MAAM,oEAAoE;AACjF,QAAK,0BAA0B,gBAAgB,MAAM,KAAK;WACnD,OAAO;AACd,UAAO,KACL,gFACA,MACD;;AAGH,SAAO,eAAe,MAAMA,WAAS,KAAK;;;;;CAM5C,AAAQ,0BAA0B,MAAY,MAAmB;EAC/D,MAAM,CAAC,iBAAiB;AAExB,MAAI,CAAC,iBAAiB,CAAC,cAAc,UAAU;AAC7C,UAAO,KAAK,+DAA+D;AAC3E;;AAGF,MAAI;GAEF,MAAM,eAAe,uBAAuB,cAAc;GAC1D,MAAM,gBAAgB,cAAc,aAAa;GACjD,MAAM,gBAAgB,cAAc,iBAAiB,cAAc,MAAM,SAAS;AAElF,aAAU,kBAAkB,MAAM;IAChC,MAAM,GAAG,cAAc,GAAG;IAC1B,aAAa,YAAY;IAC1B,CAAC;WACK,OAAO;AACd,UAAO,KAAK,+DAA+D,MAAM;;;CAIrF,AAAQ,MAAM,QAAa,cAAsB,SAAuC;AACtF,OAAK,QAAQ,cAAc,QAAQ;;;;;;;;;;ACnJvC,IAAa,iBAAb,cAAoCE,oBAAa;CAI/C,YAAY,mBAAsC,UAAqB;AACrE,SAAO;AACP,OAAK,oBAAoB;AACzB,OAAK,WAAW;;CAGlB,MAAM,GAAG,MAAa;AACpB,SAAO,MAAM,qEAAqE;EAElF,MAAM,aAAa,kBAAkB,CAAC,iBAAiB,CAAC;EAGxD,MAAM,cAAc,KAAK,kBAAkB,eAAe,KAAK;AAE/D,MAAI,CAAC,eAAe,CAAC,YAAY,MAAM;AACrC,UAAO,MAAM,6EAA6E;AAC1F,UAAO,QAAQ,QAAQ;IAAE,MAAM,EAAE;IAAE,UAAU;IAAG,CAAC;;EASnD,MAAM,aAAa,qBANG;GACpB,MAAM,YAAY;GAClB,QAAQ,YAAY,UAAU,EAAE;GAChC,YAAY;GACb,CAEqD;AAEtD,MAAI,KAAK,SACP,QAAO,KAAK,kBAAkB,kBAC5B,aACA,YACA,KAAK,UACL,WACD;MAID,QAAO,KAAK,kBAAkB,sBAAsB,YAAY;;CAIpE,UAAU;AAER,OAAK,KAAK,MAAM;;CAGlB,MAAM;AACJ,OAAK,KAAK,MAAM;AAChB,SAAO,QAAQ,SAAS;;CAG1B,QAAQ,UAAqB;AAE3B,MAAI,UAAU;AACZ,WAAQ,eAAe,SAAS,KAAK,CAAC;AACtC;;AAEF,SAAO,QAAQ,SAAS;;CAI1B,IAAI,uBAAuB;AACzB,SAAO;GACL,MAAM;GACN,MAAM;GACN,UAAU;GACV,MAAM;GACP;;CAGH,IAAI,gBAAgB;AAClB,SAAO;;CAGT,IAAI,YAAY;AACd,SAAO;;CAGT,IAAI,YAAY;AACd,SAAO;;CAGT,IAAI,cAAc;AAChB,SAAO;;CAGT,aAAa;CAIb,cAAc;CAId,iBAAiB,KAAa;AAC5B,SAAO,IAAI,IAAI,QAAQ,MAAM,OAAK,CAAC;;CAGrC,cAAc,KAAa;AACzB,SAAO,IAAI,IAAI,QAAQ,MAAM,KAAK,CAAC;;;;;;;AC3FvC,IAAa,oBAAb,cAAuC,sBAAsB;CAK3D,YAAY,SAAkC,EAAE,EAAE;AAChD,QAAM,MAAM,OAAO;OALJ,uBAAuB;AAMtC,OAAK,OAAO,OAAO,QAAQ,cAAc;AACzC,OAAK,YAAY,cAAc,aAAa;;CAG9C,OAAsC;AACpC,SAAO,CACL,IAAI,4BAA4B;GAC9B,MAAM;GACN,mBAAmB,CAAC,MAAM;GAC1B,QAAQ,kBAAmC,KAAK,eAAe,cAAc;GAC9E,CAAC,EACF,IAAI,4BAA4B;GAC9B,MAAM;GACN,mBAAmB,CAAC,OAAO,MAAM;GACjC,QAAQ,kBAAuC,KAAK,mBAAmB,cAAc;GACtF,CAAC,CAEH;;CAGH,AAAQ,eAAe,UAA4C;AACjE,SAAO,MAAM,6CAA6C,KAAK,KAAK,OAAO;AAE3E,MAAI,KAAK,gBAAgB,SAAS,EAAE;AAClC,UAAO,MAAM,0DAA0D;AACvE,UAAO;;AAIT,MAAI,SAAS,UAAU,SAAS,OAAO,WAAW;AAChD,QAAK,MAAM,SAAS,OAAO,WAAW,SAAS,KAAK,iBAAiB,SAAS,CAAC;AAC/E,UAAO,MAAM,qDAAqD;;AAIpE,MAAI,SAAS,UAAU,SAAS,OAAO,WAAW;AAChD,QAAK,MAAM,SAAS,OAAO,WAAW,WAAW,KAAK,mBAAmB,SAAS,CAAC;AACnF,UAAO,MAAM,uDAAuD;;AAGtE,OAAK,oBAAoB,SAAS;AAClC,SAAO,MAAM,kDAAkD;AAE/D,SAAO;;CAGT,AAAQ,iBAAiB,YAAoB;EAC3C,MAAM,OAAO;AAEb,UAAQ,kBAA4B;AAClC,UAAO,SAAS,MAAmB,GAAG,MAAa;IAEjD,IAAIC,cAAkC;AACtC,QAAI;AACF,mBAAc,KAAK,eAAe,KAAK;aAChC,OAAO;AACd,YAAO,MAAM,iDAAiD,MAAM;;AAGtE,QAAI,CAAC,eAAe,CAAC,YAAY,MAAM;AAErC,YAAO,MAAM,wDAAwD,KAAK;AAC1E,YAAO,cAAc,MAAM,MAAM,KAAK;;IAGxC,MAAMC,aAAiC;KACrC,MAAM,YAAY;KAClB,QAAQ,YAAY,UAAU,EAAE;KAChC;KACD;AAGD,QAAI,KAAK,SAAS,cAAc,QAAQ;KACtC,MAAM,aAAa,kBAAkB,CAAC,oBAAoB,CAAC;AAE3D,YAAO,iBAAiB;MACtB,0BAA0B;AACxB,cAAO,KAAK,sBAAsB,YAAY;;MAEhD,iBAAiB;MACjB,yBAAyB;OAEvB,MAAM,cAAc,WAAW,eAAe,SAAS,YAAY;OACnE,MAAM,WAAW,WAAW,eAAe,SAAS,kBAAkB;AACtE,cAAO,UAAU,qBACf,KAAK,YACC,cAAc,MAAM,MAAM,KAAK,EACrC;QACE,MAAM;QACN,MAAMC,uBAAS;QACf,WAAW;QACX,aAAa,YAAY;QACZ;QACb,qBAAqB,KAAK;QACd;QACZ,eAAe;QAChB,GACA,aAAa;AACZ,eAAO,KAAK,kBAAkB,aAAa,YAAY,UAAU,WAAW;SAE/E;;MAEJ,CAAC;eACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,cAAc,MAAM,MAAM,KAAK;KAC3D,oBAAoB,EAAE,oBAAoB;MAGxC,MAAM,cAAc,WAAW,eAAe,SAAS,YAAY;MACnE,MAAM,WAAW,WAAW,eAAe,SAAS,kBAAkB;AACtE,aAAO,UAAU,qBACf,KAAK,YACC,cAAc,MAAM,MAAM,KAAK,EACrC;OACE,MAAM;OACN,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,qBAAqB,KAAK;OACb;OACD;OACZ;OACD,GACA,aAAa;AACZ,cAAO,KAAK,yBACV,UACA,eACA,aACA,MACA,KACD;QAEJ;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAGF,QAAO,cAAc,MAAM,MAAM,KAAK;;;;CAM9C,AAAQ,mBAAmB,YAAoB;EAC7C,MAAM,OAAO;AAEb,UAAQ,oBAA8B;AACpC,UAAO,SAAS,QAA0B,UAAqB;IAC7D,MAAM,aAAa,EAAE,YAAY;AAGjC,QAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;KACtB,0BAA0B;AACxB,UAAI,UAAU;AACZ,eAAQ,eAAe,SAAS,KAAK,CAAC;AACtC;YAEA,QAAO,QAAQ,SAAS;;KAG5B,iBAAiB;KACjB,yBAAyB;AAEvB,aAAO,UAAU,qBACf,KAAK,YACC,gBAAgB,MAAM,MAAM,CAAC,SAAS,CAAC,EAC7C;OACE,MAAM;OACN,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa;OACb,aAAa,YAAY;OACzB,qBAAqB,KAAK;OACd;OACZ,eAAe;OAChB,GACA,aAAa;AACZ,cAAO,KAAK,qBAAqB,SAAS;QAE7C;;KAEJ,CAAC;aACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,gBAAgB,MAAM,MAAM,CAAC,SAAS,CAAC;KACnE,oBAAoB,EAAE,oBAAoB;AAExC,aAAO,UAAU,qBACf,KAAK,YACC,gBAAgB,MAAM,MAAM,CAAC,SAAS,CAAC,EAC7C;OACE,MAAM;OACN,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa;OACb,aAAa,YAAY;OACzB,qBAAqB,KAAK;OACd;OACZ;OACD,GACA,aAAa;AACZ,cAAO,KAAK,2BAA2B,UAAU,iBAAiB,UAAU,KAAK;QAEpF;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAGF,QAAO,gBAAgB,MAAM,MAAM,CAAC,SAAS,CAAC;;;;CAMtD,eAAe,MAAiC;AAC9C,MAAI,KAAK,WAAW,EAAG,QAAO;EAE9B,MAAM,WAAW,KAAK;AAGtB,MAAI,OAAO,aAAa,UAAU;GAChC,MAAMC,SAAsB;IAC1B,MAAM;IACN,UAAU,OAAO,KAAK,KAAK,SAAS,OAAO,aAAa,KAAK,KAAK,SAAS,KAAK;IACjF;AACD,OAAI,MAAM,QAAQ,KAAK,GAAG,CACxB,QAAO,SAAS,KAAK;AAEvB,UAAO;;AAIT,MAAI,OAAO,aAAa,YAAY,SAAS,KAC3C,QAAO;GACL,MAAM,SAAS;GACf,QAAQ,SAAS;GACjB,UAAU,SAAS,aAAa,OAAO,KAAK,OAAO,aAAa,KAAK,KAAK;GAC3E;AAGH,SAAO;;CAGT,AAAQ,yBACN,UACA,eACA,aACA,MACA,WACO;AAGP,MAFoB,CAAC,CAAC,YAAY,UAEjB;GAEf,MAAM,mBAAmB,YAAY;GACrC,MAAM,mBAAmB,OAAqB,WAAsB;AAClE,QAAI,OAAO;AACT,YAAO,MACL,qDAAqD,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GACjG;AACD,SAAI;AACF,gBAAU,QAAQ,SAAS,MAAM;OAC/B,MAAMC,6BAAe;OACrB,SAAS,MAAM;OAChB,CAAC;cACKC,SAAO;AACd,aAAO,MAAM,0CAA0CA,QAAM;;WAE1D;AACL,YAAO,MACL,sEAAsE,UAAU,cAAc,CAAC,GAChG;AACD,SAAI;AACF,WAAK,2BAA2B,UAAU,OAAO;AACjD,gBAAU,QAAQ,SAAS,MAAM,EAAE,MAAMD,6BAAe,IAAI,CAAC;cACtDC,SAAO;AACd,aAAO,MAAM,kDAAkDA,QAAM;;;AAGzE,WAAO,iBAAiB,OAAO,OAAO;;AAIxC,OAAI;IACF,MAAM,WAAW,KAAK;AAGtB,QAFuB,OAAO,aAAa,YAAY,SAAS,QAAQ,SAAS,UAE7D;KAElB,MAAM,cAAc;AACpB,UAAK,eAAe;MAAE,GAAG,KAAK;MAAc,UAAU;MAAiB;WAClE;KAEL,MAAM,gBAAgB,KAAK,WAAW,QAAQ,OAAO,QAAQ,WAAW;AACxE,SAAI,iBAAiB,EACnB,MAAK,iBAAiB;;YAGnB,OAAO;AACd,WAAO,MAAM,iDAAiD,OAAO,KAAK;;AAG5E,UAAO,cAAc,MAAMC,WAAS,KAAK;QAKzC,QAFgB,cAAc,MAAMA,WAAS,KAAK,CAG/C,MAAM,WAAqB;AAC1B,UAAO,MACL,wDAAwD,UAAU,cAAc,CAAC,GAClF;AACD,OAAI;AACF,SAAK,2BAA2B,UAAU,OAAO;AACjD,cAAU,QAAQ,SAAS,MAAM,EAAE,MAAMF,6BAAe,IAAI,CAAC;YACtD,OAAO;AACd,WAAO,MAAM,kDAAkD,MAAM;;AAEvE,UAAO;IACP,CACD,OAAO,UAAiB;AACvB,UAAO,MACL,uCAAuC,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GACnF;AACD,OAAI;AACF,cAAU,QAAQ,SAAS,MAAM;KAC/B,MAAMA,6BAAe;KACrB,SAAS,MAAM;KAChB,CAAC;YACKC,SAAO;AACd,WAAO,MAAM,0CAA0CA,QAAM;;AAE/D,SAAM;IACN;;CAIR,MAAM,sBAAsB,aAAwC;EAClE,MAAM,cAAc;GAAE,MAAM,EAAE;GAAE,UAAU;GAAG;AAC7C,MAAI,YAAY,UAAU;AACxB,WAAQ,eAAe,YAAY,SAAU,MAAM,YAAY,CAAC;AAChE;QAEA,QAAO,QAAQ,QAAQ,YAAY;;CAIvC,MAAM,kBACJ,aACA,YACA,UACA,YACc;AACd,SAAO,MAAM,yCAAyC;EAEtD,MAAM,cAAc,WAAW,eAAe,SAAS,YAAY;EACnE,MAAM,WAAW,WAAW,eAAe,SAAS,kBAAkB;EAGtE,MAAM,WAAW,MAAM,sBAAsB;GAC3C,iBAAiB;IACf,SAAS,SAAS;IAClB,QAAQ,SAAS;IACjB,MAAM;IACM;IACC;IACb,qBAAqB,KAAK;IAC1B,eAAe;IACf,MAAMH,uBAAS;IACf;IACD;GACD,WAAW,KAAK;GACjB,CAAC;AAEF,MAAI,CAAC,UAAU;GACb,MAAM,YAAY,YAAY,QAAQ,WAAW,QAAQ;AACzD,UAAO,KAAK,wDAAwD,YAAY;AAChF,SAAM,IAAI,MAAM,wDAAwD,YAAY;;EAItF,MAAM,kBAAkB,KAAK,qBAAqB,SAAS,OAAO;AAGlE,MAAI,YAAY,UAAU;AACxB,WAAQ,eAAe;AACrB,gBAAY,SAAU,MAAM,gBAAgB;KAC5C;AACF;QAEA,QAAO,QAAQ,QAAQ,gBAAgB;;;;;;;;CAU3C,AAAQ,qBAAqB,QAAkB;AAC7C,MAAI,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,OAAO,KACvC,QAAO;EAIT,MAAMK,eAAuC,EAAE;AAC/C,SAAO,OAAO,SAAS,UAAe;AACpC,gBAAa,MAAM,QAAQ,MAAM;IACjC;EAGF,MAAM,gBAAgB,OAAO,KAAK,KAAK,KAAU,aAAqB;GACpE,MAAM,eAAe,EAAE,GAAG,KAAK;AAE/B,UAAO,KAAK,IAAI,CAAC,SAAS,cAAc;IACtC,MAAM,aAAa,aAAa;IAChC,MAAM,QAAQ,IAAI;AAElB,QAAI,UAAU,QAAQ,UAAU,OAC9B;AAGF,YAAQ,YAAR;KACE,KAAK;KACL,KAAK;AACH,UAAI,OAAO,UAAU,SAEnB,cAAa,aADG,IAAI,KAAK,MAAM;AAGjC;KACF,KAAK;AACH,UAAI,OAAO,UAAU,SACnB,cAAa,aAAa,IAAI,KAAK,MAAM;AAE3C;KACF,KAAK;KACL,KAAK,KAGH;KAEF,QAEE;;KAEJ;AAEF,UAAO;IACP;AAOF,SALoB;GAClB,GAAG;GACH,MAAM;GACP;;CAKH,AAAQ,2BACN,UACA,iBACA,UACA,WACY;AACZ,MAAI,UAAU;GAEZ,MAAM,mBAAmB,UAAwB;AAC/C,QAAI,OAAO;AACT,YAAO,MACL,yCAAyC,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GACrF;AACD,SAAI;AACF,gBAAU,QAAQ,SAAS,MAAM;OAC/B,MAAMH,6BAAe;OACrB,SAAS,MAAM;OAChB,CAAC;cACKC,SAAO;AACd,aAAO,MAAM,0CAA0CA,QAAM;;WAE1D;AACL,YAAO,MACL,0DAA0D,UAAU,cAAc,CAAC,GACpF;AACD,SAAI;AACF,gBAAU,kBAAkB,SAAS,MAAM,EACzC,aAAa,EAAE,WAAW,MAAM,EACjC,CAAC;AACF,gBAAU,QAAQ,SAAS,MAAM,EAAE,MAAMD,6BAAe,IAAI,CAAC;cACtDC,SAAO;AACd,aAAO,MAAM,0DAA0DA,QAAM;;;AAGjF,WAAO,SAAS,MAAM;;AAGxB,UAAO,gBAAgB,KAAKC,WAAS,gBAAgB;QAKrD,QAFgB,gBAAgB,KAAKA,UAAQ,CAG1C,MAAM,WAAuB;AAC5B,UAAO,MACL,0DAA0D,UAAU,cAAc,CAAC,GACpF;AACD,OAAI;AACF,cAAU,kBAAkB,SAAS,MAAM,EACzC,aAAa,EAAE,WAAW,MAAM,EACjC,CAAC;AACF,cAAU,QAAQ,SAAS,MAAM,EAAE,MAAMF,6BAAe,IAAI,CAAC;YACtD,OAAO;AACd,WAAO,MAAM,0DAA0D,MAAM;;AAE/E,UAAO;IACP,CACD,OAAO,UAAiB;AACvB,UAAO,MACL,yCAAyC,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GACrF;AACD,OAAI;AACF,cAAU,QAAQ,SAAS,MAAM;KAC/B,MAAMA,6BAAe;KACrB,SAAS,MAAM;KAChB,CAAC;YACKC,SAAO;AACd,WAAO,MAAM,0CAA0CA,QAAM;;AAE/D,SAAM;IACN;;CAIR,AAAQ,qBAAqB,UAAqB;AAChD,SAAO,MAAM,2CAA2C;AAGxD,MAAI,UAAU;AACZ,WAAQ,eAAe,SAAS,KAAK,CAAC;AACtC;QAEA,QAAO,QAAQ,SAAS;;CAI5B,AAAQ,2BAA2B,UAAoB,QAAyB;AAC9E,MAAI,CAAC,OAAQ;EAEb,MAAM,cAAc;GAClB,SAAS,OAAO;GAChB,UAAU,OAAO;GACjB,KAAK,OAAO;GACZ,MAAM,OAAO,QAAQ,EAAE;GACvB,QAAQ,OAAO,UAAU,EAAE;GAC5B;AAED,YAAU,kBAAkB,SAAS,MAAM,EACzC,aACD,CAAC;;CAGJ,AAAQ,mBAAmB,cAAwD;AACjF,MAAI,KAAK,gBAAgB,aAAa,EAAE;AACtC,UAAO,MAAM,+DAA+D;AAC5E,UAAO;;AAIT,MAAI,aAAa,WAAW;AAC1B,QAAK,MAAM,aAAa,WAAW,SAAS,KAAK,iBAAiB,OAAO,CAAC;AAC1E,UAAO,MAAM,mDAAmD;;AAIlE,MAAI,aAAa,WAAW;AAC1B,QAAK,MAAM,aAAa,WAAW,WAAW,KAAK,wBAAwB,CAAC;AAC5E,UAAO,MAAM,qDAAqD;;AAGpE,OAAK,oBAAoB,aAAa;AACtC,SAAO,MAAM,uDAAuD;AAEpE,SAAO;;CAGT,AAAQ,yBAAyB;EAC/B,MAAM,OAAO;AAEb,UAAQ,oBAA8B;AACpC,UAAO,SAAS,QAA0B,UAAqB;IAC7D,MAAM,aAAa,EAAE,YAAY,QAAQ;AAGzC,QAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;KACtB,0BAA0B;MACxB,MAAM,aAAa,IAAI,eAAe,KAAK;AAE3C,UAAI,UAAU;AACZ,eAAQ,eAAe,SAAS,MAAM,kBAAkB,GAAG,CAAC;AAC5D;YAEA,QAAO,QAAQ,QAAQ,WAAW;;KAGtC,iBAAiB;KACjB,yBAAyB;AACvB,aAAO,UAAU,qBACf,KAAK,YACC,gBAAgB,MAAM,MAAM,CAAC,SAAS,CAAC,EAC7C;OACE,MAAM;OACN,MAAMH,uBAAS;OACf,WAAW;OACX,aAAa;OACb,aAAa,YAAY;OACzB,qBAAqB,KAAK;OACd;OACZ,eAAe;OAChB,GACA,aAAa;AACZ,cAAO,KAAK,yBAAyB,UAAU,SAAS;QAE3D;;KAEJ,CAAC;aACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,gBAAgB,MAAM,MAAM,CAAC,SAAS,CAAC;KACnE,oBAAoB,EAAE,oBAAoB;AAExC,aAAO,UAAU,qBACf,KAAK,YACC,gBAAgB,MAAM,MAAM,CAAC,SAAS,CAAC,EAC7C;OACE,MAAM;OACN,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa;OACb,aAAa,YAAY;OACzB,qBAAqB,KAAK;OACd;OACZ;OACD,GACA,aAAa;AACZ,cAAO,KAAK,+BACV,UACA,iBACA,UACA,KACD;QAEJ;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAGF,QAAO,gBAAgB,MAAM,MAAM,CAAC,SAAS,CAAC;;;;CAMtD,AAAQ,+BACN,UACA,iBACA,UACA,WACY;AACZ,MAAI,UAAU;GAEZ,MAAM,mBAAmB,OAAqB,QAAqB,SAAoB;AACrF,QAAI,OAAO;AACT,YAAO,MACL,8CAA8C,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GAC1F;AACD,SAAI;AACF,gBAAU,QAAQ,SAAS,MAAM;OAC/B,MAAME,6BAAe;OACrB,SAAS,MAAM;OAChB,CAAC;cACKC,SAAO;AACd,aAAO,MAAM,0CAA0CA,QAAM;;WAE1D;AACL,YAAO,MACL,+DAA+D,UAAU,cAAc,CAAC,GACzF;AACD,SAAI;AACF,gBAAU,kBAAkB,SAAS,MAAM,EACzC,aAAa;OACX,WAAW;OACX,WAAW,CAAC,CAAC;OACd,EACF,CAAC;AACF,gBAAU,QAAQ,SAAS,MAAM,EAAE,MAAMD,6BAAe,IAAI,CAAC;cACtDC,SAAO;AACd,aAAO,MAAM,+DAA+DA,QAAM;;;AAGtF,WAAO,SAAS,OAAO,QAAQ,KAAK;;AAGtC,UAAO,gBAAgB,KAAKC,WAAS,gBAAgB;QAKrD,QAFgB,gBAAgB,KAAKA,UAAQ,CAG1C,MAAM,WAAuB;AAC5B,UAAO,MACL,+DAA+D,UAAU,cAAc,CAAC,GACzF;AACD,OAAI;AACF,cAAU,kBAAkB,SAAS,MAAM,EACzC,aAAa;KACX,WAAW;KACX,WAAW,CAAC,CAAC;KACd,EACF,CAAC;AACF,cAAU,QAAQ,SAAS,MAAM,EAAE,MAAMF,6BAAe,IAAI,CAAC;YACtD,OAAO;AACd,WAAO,MAAM,+DAA+D,MAAM;;AAEpF,UAAO;IACP,CACD,OAAO,UAAiB;AACvB,UAAO,MACL,8CAA8C,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GAC1F;AACD,OAAI;AACF,cAAU,QAAQ,SAAS,MAAM;KAC/B,MAAMA,6BAAe;KACrB,SAAS,MAAM;KAChB,CAAC;YACKC,SAAO;AACd,WAAO,MAAM,0CAA0CA,QAAM;;AAE/D,SAAM;IACN;;CAIR,AAAQ,yBAAyB,UAAoB,UAAqB;AACxE,SAAO,MAAM,gDAAgD;EAI7D,MAAM,aAAa,IAAI,eAAe,MAAM,SAAS;AAErD,MAAI,UAAU;AACZ,WAAQ,eAAe,SAAS,MAAM,kBAAkB,GAAG,CAAC;AAC5D;QAEA,QAAO,QAAQ,QAAQ,WAAW;;CAItC,AAAQ,MACN,QACA,cACA,SACM;AACN,OAAK,QAAQ,cAAc,QAAQ;;;;;;AC3tBvC,SAAgB,0BAA0B,OAA8C;AACtF,QACE,UAAU,QACV,UAAU,UACV,OAAO,UAAU,YACjB,uBAAuB,SACvB,OAAO,OAAO,mBAAmB,CAAC,SAAS,MAAM,kBAAkB;;AAavE,IAAY,oEAAL;AACL;AACA;;;;;;;ACnEF,IAAa,0BAAb,cAA6C,sBAAsB;CAKjE,YAAY,SAAwC,EAAE,EAAE;AACtD,QAAM,YAAY,OAAO;OALV,uBAAuB;AAMtC,OAAK,OAAO,OAAO,QAAQ,cAAc;AACzC,OAAK,YAAY,cAAc,aAAa;;CAG9C,OAAsC;AACpC,SAAO,CACL,IAAI,4BAA4B;GAC9B,MAAM;GACN,mBAAmB,CAAC,MAAM;GAC1B,QAAQ,kBAAyC,KAAK,qBAAqB,cAAc;GAC1F,CAAC,CACH;;CAGH,AAAQ,qBAAqB,gBAA8D;AACzF,SAAO,MAAM,yDAAyD,KAAK,KAAK,OAAO;AAEvF,MAAI,KAAK,gBAAgB,eAAe,EAAE;AACxC,UAAO,MAAM,sEAAsE;AACnF,UAAO;;EAGT,MAAM,OAAO;AAEb,MAAI,MAAM,eAAe,EAAE;AAIzB,UAAO,MAAM,wDAAwD;AACrE,QAAK,MAAM,gBAAgB,YAAY,qBAA0B;AAC/D,WAAO,SAAqB,GAAG,MAAa;AAC1C,YAAO,KAAK,0BAA0B,kBAAkB,KAAK;;KAE/D;SACG;AAIL,UAAO,MAAM,6DAA6D;GAC1E,MAAM,mBAAmB;GAEzB,MAAM,kBAAkB,SAAU,GAAG,MAAa;AAChD,WAAO,MAAM,wEAAwE,KAAK;AAC1F,WAAO,KAAK,0BAA0B,kBAAkB,KAAK;;AAK/D,UAAO,eAAe,iBAAiB,OAAO,eAAe,iBAAiB,CAAC;AAC/E,UAAO,eAAe,iBAAiB,QAAQ,EAAE,OAAO,iBAAiB,MAAM,CAAC;AAGhF,QAAK,MAAM,OAAO,iBAChB,KAAI,iBAAiB,eAAe,IAAI,CACtC,iBAAgB,OAAO,iBAAiB;AAK5C,UAAO,oBAAoB,iBAAiB,CAAC,SAAS,QAAQ;AAC5D,QAAI,QAAQ,eAAe,QAAQ,YAAY,QAAQ,QAAQ;KAC7D,MAAM,aAAa,OAAO,yBAAyB,kBAAkB,IAAI;AACzE,SAAI,WACF,QAAO,eAAe,iBAAiB,KAAK,WAAW;;KAG3D;AAEF,oBAAiB;;AAKnB,MAAI,eAAe,OAAO,OAAO,eAAe,QAAQ,YAAY;AAClE,QAAK,MAAM,gBAAgB,OAAO,KAAK,gBAAgB,CAAC;AACxD,UAAO,MAAM,iDAAiD;;AAGhE,OAAK,oBAAoB,eAAe;AACxC,SAAO,MAAM,8DAA8D;AAE3E,SAAO;;CAGT,AAAQ,0BAA0B,kBAA4B,MAAkB;EAG9E,MAAM,mBAAmB,OAAO,KAAK,OAAO,WAAW,KAAK,KAAK;EACjE,MAAM,UAAU,OAAO,KAAK,OAAO,WAAW,KAAK,KAAK,KAAK;EAE7D,MAAM,aAAa;GACjB,kBAAkB,mBACd,KAAK,0BAA0B,iBAAiB,GAChD;GACJ,SAAS,UAAU,KAAK,2BAA2B,QAAQ,GAAG;GAC/D;AAGD,MAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;GACtB,0BAA0B;AACxB,QAAI;KACF,MAAM,cAAc,iBAAiB,GAAG,KAAK;AAG7C,YAFwB,KAAK,iBAAiB,YAAY;aAGnDG,OAAY;AACnB,YAAO,MACL,kEAAkE,MAAM,UACzE;AAED,WAAM;;;GAGV,iBAAiB;GACjB,yBAAyB;AACvB,WAAO,UAAU,qBACf,KAAK,YACC;KACJ,MAAM,cAAc,iBAAiB,GAAG,KAAK;AAC7C,YAAO,KAAK,iBAAiB,YAAY;OAE3C;KACE,MAAM;KACN,MAAMC,uBAAS;KACf,WAAW;KACX,aAAa,YAAY;KACzB,aAAa;KACb,qBAAqB,KAAK;KACd;KACZ,eAAe;KAChB,GACA,aAAa;AACZ,YAAO,KAAK,qBAAqB,kBAAkB,KAAK;MAE3D;;GAEJ,CAAC;WACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;GACtB,4BAA4B;IAC1B,MAAM,cAAc,iBAAiB,GAAG,KAAK;AAC7C,WAAO,KAAK,iBAAiB,YAAY;;GAE3C,oBAAoB,EAAE,oBAAoB;AACxC,WAAO,UAAU,qBACf,KAAK,YACC;KACJ,MAAM,cAAc,iBAAiB,GAAG,KAAK;AAC7C,YAAO,KAAK,iBAAiB,YAAY;OAE3C;KACE,MAAM;KACN,MAAMA,uBAAS;KACf,WAAW;KACX,aAAa,YAAY;KACzB,aAAa;KACb,qBAAqB,KAAK;KACd;KACZ;KACD,GACA,aAAa;AACZ,YAAO,KAAK,qBAAqB,UAAU,kBAAkB,KAAK;MAErE;;GAEH,UAAUA,uBAAS;GACpB,CAAC;MAEF,QAAO,iBAAiB,GAAG,KAAK;;CAIpC,AAAQ,0BAA0B,kBAAkC;AAClE,MAAI;GAEF,MAAM,MAAM,IAAI,IAAI,iBAAiB;AACrC,OAAI,IAAI,SACN,KAAI,WAAW;AAEjB,UAAO,IAAI,UAAU;UACf;AACN,UAAO;;;CAIX,AAAQ,2BAA2B,SAAmB;AACpD,MAAI,CAAC,WAAW,OAAO,YAAY,SACjC,QAAO;EAGT,MAAM,YAAY,EAAE,GAAG,SAAS;AAGhC,MAAI,UAAU,SACZ,WAAU,WAAW;AAEvB,MAAI,UAAU,OAAO,OAAO,UAAU,QAAQ,UAAU;AACtD,aAAU,MAAM,EAAE,GAAG,UAAU,KAAK;AACpC,OAAI,UAAU,IAAI,IAAK,WAAU,IAAI,MAAM;AAC3C,OAAI,UAAU,IAAI,KAAM,WAAU,IAAI,OAAO;AAC7C,OAAI,UAAU,IAAI,GAAI,WAAU,IAAI,KAAK;;AAG3C,SAAO;;CAGT,AAAQ,qBAAqB,UAAoB,kBAA4B,MAAkB;EAC7F,MAAM,cAAc,iBAAiB,GAAG,KAAK;EAC7C,MAAM,kBAAkB,KAAK,iBAAiB,YAAY;AAE1D,MAAI;AACF,UAAO,MACL,uEAAuE,UAAU,cAAc,CAAC,GACjG;AACD,aAAU,kBAAkB,SAAS,MAAM,EACzC,aAAa,EAAE,WAAW,MAAM,EACjC,CAAC;AACF,aAAU,QAAQ,SAAS,MAAM,EAAE,MAAMC,6BAAe,IAAI,CAAC;WACtD,OAAO;AACd,UAAO,MAAM,2DAA2D,MAAM;;AAGhF,SAAO;;CAGT,AAAQ,qBAAqB,kBAA4B,MAAkB;AACzE,SAAO,MAAM,0DAA0D;AAIvE,MAAI;GACF,MAAM,cAAc,iBAAiB,GAAG,KAAK;AAG7C,UAFwB,KAAK,iBAAiB,YAAY;WAGnDF,OAAY;AACnB,UAAO,MACL,kEAAkE,MAAM,UACzE;AAED,SAAM;;;CAIV,AAAQ,iBAAiB,aAAuB;AAC9C,MAAI,CAAC,eAAe,OAAO,gBAAgB,WACzC,QAAO;EAGT,MAAM,OAAO;EACb,MAAM,cAAc;EAGpB,MAAM,aAAa,SAAU,SAA+B,GAAG,QAAe;AAC5E,UAAO,KAAK,gBAAgB,aAAa,SAAS,OAAO;;AAI3D,SAAO,eAAe,YAAY,OAAO,eAAe,YAAY,CAAC;AACrE,OAAK,MAAM,OAAO,YAChB,KAAI,OAAO,YAAY,SAAS,WAC9B,CAAC,WAAmB,OAAO,YAAY;MAEvC,CAAC,WAAmB,OAAO,YAAY,KAAK,KAAK,YAAY;AAKjE,MAAI,OAAO,YAAY,WAAW,YAAY;AAC5C,GAAC,WAAmB,SAAS,KAAK,kBAAkB,YAAY;AAChE,UAAO,MAAM,kEAAkE;;AAIjF,MAAI,OAAO,YAAY,UAAU,YAAY;AAC3C,GAAC,WAAmB,QAAQ,KAAK,iBAAiB,YAAY;AAC9D,UAAO,MAAM,iEAAiE;;AAGhF,SAAO;;CAGT,AAAQ,kBAAkB,aAAkB;EAC1C,MAAM,OAAO;EACb,MAAM,iBAAiB,YAAY;AAEnC,SAAO,SAAS,OACd,OACA,YACA,cACK;AACL,UAAO,KAAK,mBAAmB,aAAa,gBAAgB,OAAO,YAAY,aAAa;;;CAIhG,AAAQ,iBAAiB,aAAkB;EACzC,MAAM,OAAO;EACb,MAAM,gBAAgB,YAAY;AAElC,SAAO,SAAS,MACd,mBACA,UACK;GAEL,MAAM,UAAU,OAAO,sBAAsB,WAAW,oBAAoB;GAC5E,MAAM,sBACJ,OAAO,sBAAsB,aAAa,oBAAoB;AAEhE,UAAO,KAAK,wBAAwB,aAAa,eAAe,SAAS,oBAAoB;;;CAIjG,AAAQ,iBAAiB;EACvB,MAAM,OAAO;AAEb,UAAQ,gBAA0B;AAChC,UAAO,SAAS,IAAI,SAA+B,GAAG,QAAe;AACnE,WAAO,KAAK,gBAAgB,aAAa,SAAS,OAAO;;;;CAK/D,AAAQ,gBACN,aACA,SACA,QACK;EAEL,IAAI,QAAQ;AACZ,OAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,YAAS,QAAQ;AACjB,OAAI,IAAI,OAAO,OACb,UAAS,IAAI,IAAI;;EAIrB,MAAMG,aAAuC;GAC3C,OAAO,MAAM,MAAM;GACnB,YAAY;GACb;AAGD,MAAI,KAAK,SAAS,cAAc,QAAQ;GACtC,MAAM,aAAa,kBAAkB,CAAC,0BAA0B,CAAC;AAEjE,UAAO,iBAAiB;IACtB,0BAA0B;IAG1B,iBAAiB;IACjB,yBAAyB;AACvB,YAAO,UAAU,qBACf,KAAK,YACC,YAAY,KAAK,MAAM,SAAS,GAAG,OAAO,EAChD;MACE,MAAM;MACN,MAAMF,uBAAS;MACf,WAAW;MACX,aAAa,YAAY;MACzB,aAAa;MACb,qBAAqB,KAAK;MACd;MACZ,eAAe;MAChB,GACA,aAAa;AACZ,aAAO,KAAK,qBAAqB;OAC/B;OACA;OACA,WAAW;OACX,MAAM;OACN;OACD,CAAC;OAEL;;IAEJ,CAAC;aACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;GACtB,4BAA4B,YAAY,KAAK,MAAM,SAAS,GAAG,OAAO;GACtE,oBAAoB,EAAE,oBAAoB;AACxC,WAAO,UAAU,qBACf,KAAK,YACC,YAAY,KAAK,MAAM,SAAS,GAAG,OAAO,EAChD;KACE,MAAM;KACN,MAAMA,uBAAS;KACf,WAAW;KACX,aAAa,YAAY;KACzB,qBAAqB,KAAK;KAC1B,aAAa;KACD;KACZ;KACD,GACA,aAAa;AACZ,YAAO,KAAK,yBAAyB,UAAU,aAAa,SAAS,OAAO;MAE/E;;GAEH,UAAUA,uBAAS;GACpB,CAAC;MAGF,QAAO,YAAY,KAAK,MAAM,SAAS,GAAG,OAAO;;CAIrD,AAAQ,mBACN,aACA,gBACA,OACA,YACA,cACK;EAEL,MAAM,sBAAsB;AAE1B,OAAI,iBAAiB,OACnB,QAAO,eAAe,KAAK,aAAa,OAAO,YAAY,aAAa;YAC/D,eAAe,OACxB,QAAO,eAAe,KAAK,aAAa,OAAO,WAAW;OAE1D,QAAO,eAAe,KAAK,aAAa,MAAM;;EAIlD,MAAME,aAAuC;GAC3C,OAAO,MAAM,MAAM;GACnB,YAAY,cAAc,EAAE;GAC5B,SAAS;GACV;AAED,MAAI,KAAK,SAAS,cAAc,QAAQ;GACtC,MAAM,aAAa,kBAAkB,CAAC,0BAA0B,CAAC;AAEjE,UAAO,iBAAiB;IACtB,0BAA0B;AACxB,YAAO,QAAQ,QAAQ,OAAU;;IAEnC,iBAAiB;IACjB,yBAAyB;AACvB,YAAO,KAAK,iCAAiC;AAC3C,aAAO,UAAU,qBACf,KAAK,YACC,eAAe,EACrB;OACE,MAAM;OACN,MAAMF,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ,eAAe;OAChB,GACA,aAAa;AACZ,cAAO,KAAK,wBAAwB;QAClC;QACA;QACA,WAAW;QACX,MAAM;QACN;QACD,CAAC;QAEL;OACD;;IAEL,CAAC;aACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;GACtB,sBAAsB;GACtB,oBAAoB,EAAE,oBAAoB;AAExC,WAAO,UAAU,qBACf,KAAK,MACL,eACA;KACE,MAAM;KACN,MAAMA,uBAAS;KACf,WAAW;KACX,aAAa,YAAY;KACzB,aAAa;KACb,qBAAqB,KAAK;KACd;KACZ;KACD,GACA,aAAa;AACZ,YAAO,KAAK,gCAAgC,UAAU,cAAc;MAEvE;;GAEH,UAAUA,uBAAS;GACpB,CAAC;MAGF,QAAO,eAAe;;CAI1B,AAAQ,wBACN,aACA,eACA,SACA,qBACK;EACL,MAAM,aAAa;GACjB,OAAO;GACP,SAAS,UAAU,EAAE,oBAAoB,SAAS,GAAG;GACtD;EAED,MAAM,qBAAqB;AACzB,OAAI,WAAW,oBACb,QAAO,cAAc,KAAK,aAAa,SAAS,oBAAoB;YAC3D,oBACT,QAAO,cAAc,KAAK,aAAa,oBAAoB;OAE3D,QAAO,cAAc,KAAK,aAAa,WAAW,OAAU;;AAIhE,MAAI,KAAK,SAAS,cAAc,QAAQ;GACtC,MAAM,aAAa,kBAAkB,CAAC,0BAA0B,CAAC;AAEjE,UAAO,iBAAiB;IACtB,0BAA0B;IAG1B,iBAAiB;IACjB,yBAAyB;AACvB,YAAO,UAAU,qBACf,KAAK,YACC,cAAc,EACpB;MACE,MAAM;MACN,MAAMA,uBAAS;MACf,WAAW;MACX,aAAa,YAAY;MACzB,aAAa;MACb,qBAAqB,KAAK;MACd;MACZ,eAAe;MAChB,GACA,aAAa;AACZ,aAAO,KAAK,8BAA8B,UAAU,SAAS,WAAW;OAE3E;;IAEJ,CAAC;aACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;GACtB,sBAAsB;GACtB,oBAAoB,EAAE,oBAAoB;AACxC,WAAO,UAAU,qBACf,KAAK,MACL,cACA;KACE,MAAM;KACN,MAAMA,uBAAS;KACf,WAAW;KACX,aAAa,YAAY;KACzB,aAAa;KACb,qBAAqB,KAAK;KACd;KACZ;KACD,GACA,aAAa;AACZ,YAAO,KAAK,8BAA8B,UAAU,aAAa;MAEpE;;GAEH,UAAUA,uBAAS;GACpB,CAAC;MAEF,QAAO,cAAc;;;;;;;;;;;;;;;;;;;CAqBzB,AAAQ,gCACN,UACA,eACc;EACd,MAAM,UAAU,eAAe;AAG/B,UAAQ,cAAc;AAEpB,WACG,MAAM,WAAW;AAChB,WAAO,MAAM,yEAAyE;AACtF,QAAI;AACF,UAAK,2BAA2B,UAAU,OAAO;AACjD,eAAU,QAAQ,SAAS,MAAM,EAAE,MAAMC,6BAAe,IAAI,CAAC;aACtD,OAAO;AACd,YAAO,MACL,qEACA,MACD;;KAEH,CACD,OAAO,UAAU;AAChB,WAAO,MAAM,0DAA0D,MAAM,UAAU;AACvF,QAAI;AACF,eAAU,QAAQ,SAAS,MAAM;MAC/B,MAAMA,6BAAe;MACrB,SAAS,MAAM;MAChB,CAAC;aACKE,SAAO;AACd,YAAO,MAAM,gDAAgDA,QAAM;;KAErE;IACJ;AAEF,SAAO;;CAGT,AAAQ,8BACN,UACA,cACc;EACd,MAAM,UAAU,cAAc;AAG9B,UAAQ,cAAc;AAEpB,WACG,MAAM,WAAW;AAChB,WAAO,MACL,0EAA0E,UAAU,cAAc,CAAC,GACpG;AACD,QAAI;AACF,eAAU,kBAAkB,SAAS,MAAM,EACzC,aAAa;MAAE,QAAQ;MAAa;MAAQ,EAC7C,CAAC;AACF,eAAU,QAAQ,SAAS,MAAM,EAAE,MAAMF,6BAAe,IAAI,CAAC;aACtD,OAAO;AACd,YAAO,MAAM,oEAAoE,MAAM;;KAEzF,CACD,OAAO,UAAU;AAChB,WAAO,MACL,uEAAuE,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GACnH;AACD,QAAI;AACF,eAAU,kBAAkB,SAAS,MAAM,EACzC,aAAa;MAAE,QAAQ;MAAe,OAAO,MAAM;MAAS,EAC7D,CAAC;AACF,eAAU,QAAQ,SAAS,MAAM;MAC/B,MAAMA,6BAAe;MACrB,SAAS,MAAM;MAChB,CAAC;aACK,WAAW;AAClB,YAAO,MAAM,gDAAgD,UAAU;;KAEzE;IACJ;AAEF,SAAO;;CAGT,MAAc,8BACZ,UACA,SACA,YACc;AACd,SAAO,MAAM,2DAA2D;EAGxE,MAAM,WAAW,MAAM,sBAAsB;GAC3C,iBAAiB;IACf,SAAS,SAAS;IAClB,QAAQ,SAAS;IACjB,MAAM;IACN,YAAY;KACV,OAAO;KACP,SAAS,UAAU,EAAE,oBAAoB,SAAS,GAAG;KACtD;IACD,aAAa;IACb,qBAAqB,KAAK;IAC1B,eAAe;IACf,MAAMD,uBAAS;IACf;IACD;GACD,WAAW,KAAK;GACjB,CAAC;AAEF,MAAI,CAAC,UAAU;AACb,UAAO,KAAK,qEAAqE;AACjF,SAAM,IAAI,MAAM,yEAAyE;;AAG3F,SAAO,MACL,8DAA8D,KAAK,UAAU,SAAS,GACvF;EAGD,MAAM,oBAAoB,SAAS;AASnC,MALE,qBACA,OAAO,sBAAsB,YAC7B,YAAY,qBACZ,kBAAkB,WAAW,YAG7B,QAAO,kBAAkB;OACpB;GAEL,MAAM,eACJ,qBACA,OAAO,sBAAsB,YAC7B,WAAW,qBACX,kBAAkB,QACd,kBAAkB,QAClB;AACN,SAAM,IAAI,MAAM,aAAa;;;CAIjC,MAAc,yBACZ,UACA,aACA,SACA,QACc;AACd,MAAI;GACF,MAAM,SAAS,MAAM,YAAY,KAAK,MAAM,SAAS,GAAG,OAAO;AAE/D,OAAI;AACF,WAAO,MACL,oEAAoE,UAAU,cAAc,CAAC,GAC9F;AAED,SAAK,2BAA2B,UAAU,OAAO;AACjD,cAAU,QAAQ,SAAS,MAAM,EAAE,MAAMC,6BAAe,IAAI,CAAC;YACtD,OAAO;AACd,WAAO,MAAM,8DAA8D,MAAM;;AAGnF,UAAO;WACAF,OAAY;AACnB,OAAI;AACF,WAAO,MACL,mDAAmD,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GAC/F;AACD,cAAU,QAAQ,SAAS,MAAM;KAC/B,MAAME,6BAAe;KACrB,SAAS,MAAM;KAChB,CAAC;YACK,WAAW;AAClB,WAAO,MAAM,gDAAgD,UAAU;;AAGzE,SAAM;;;CAIV,MAAM,qBAAqB,EACzB,YACA,UACA,WACA,MACA,cAOqC;AACrC,SAAO,MAAM,yDAAyD;EAEtE,MAAM,WAAW,MAAM,sBAAsB;GAC3C,iBAAiB;IACf,SAAS,SAAS;IAClB,QAAQ,SAAS;IACjB;IACY;IACZ,aAAa;IACb,qBAAqB,KAAK;IAC1B,eAAe;IACf,MAAMD,uBAAS;IACf;IACD;GACD,WAAW,KAAK;GACjB,CAAC;AAEF,MAAI,CAAC,UAAU;GACb,MAAM,YAAY,WAAW,SAAS;AACtC,UAAO,KACL,wEAAwE,YACzE;AACD,SAAM,IAAI,MACR,4EAA4E,YAC7E;;AAGH,SAAO,MACL,qEAAqE,KAAK,UAAU,SAAS,GAC9F;EAED,MAAM,kBAAkB,KAAK,qBAAqB,SAAS,OAAO;AAElE,SAAO,MACL,yDAAyD,KAAK,UAAU,gBAAgB,GACzF;EAID,MAAM,iBACJ,mBAAmB,OAAO,oBAAoB,YAAY,UAAU;EACtE,MAAM,OAAO,iBACT,gBAAgB,QAAQ,EAAE,GACzB,mBAAqC,EAAE;AAO5C,SAJoB,OAAO,OAAO,MAAM;GACtC,SAAS,iBAAiB,gBAAgB,UAAU;GACpD,OAAO,iBAAiB,gBAAgB,QAAQ;GACjD,CAAC;;CAIJ,MAAM,wBAAwB,EAC5B,YACA,UACA,WACA,MACA,cAO+C;AAC/C,SAAO,MAAM,4DAA4D;EAEzE,MAAM,WAAW,MAAM,sBAAsB;GAC3C,iBAAiB;IACf,SAAS,SAAS;IAClB,QAAQ,SAAS;IACjB;IACY;IACZ,aAAa;IACb,qBAAqB,KAAK;IAC1B,eAAe;IACf,MAAMA,uBAAS;IACf;IACD;GACD,WAAW,KAAK;GACjB,CAAC;AAEF,MAAI,CAAC,UAAU;GACb,MAAM,YAAY,WAAW,SAAS;AACtC,UAAO,KACL,2EAA2E,YAC5E;AACD,SAAM,IAAI,MACR,+EAA+E,YAChF;;AAGH,SAAO,MACL,wEAAwE,KAAK,UAAU,SAAS,GACjG;EAED,MAAM,kBAAkB,KAAK,qBAAqB,SAAS,OAAO;AAElE,SAAO,MACL,4DAA4D,KAAK,UAAU,gBAAgB,GAC5F;AAED,SAAO;;;;;;;;;;;;;;CAeT,AAAQ,2BACN,qBACc;EAEd,MAAM,cAAc,qBAAqB;AAiCzC,SA9BqB,OAAO,OAAO,aAAa,EAE9C,cAAc;AACZ,UAAO,YAAY,MAAM,WAAoC;AAC3D,QAAI,CAAC,OACH,QAAO,EAAE;IAIX,MAAM,iBAAiB,OAAO,WAAW,YAAY,UAAU;IAI/D,MAAM,eAHO,iBAAiB,OAAO,QAAQ,EAAE,GAAG,MAAM,QAAQ,OAAO,GAAG,SAAS,EAAE,EAG5D,KAAK,QAAqB;AACjD,SAAI,MAAM,QAAQ,IAAI,CACpB,QAAO;AAGT,YAAO,OAAO,OAAO,IAAI;MACzB;AAGF,WAAO,OAAO,OAAO,aAAa;KAChC,SAAS,iBAAiB,OAAO,UAAU;KAC3C,OAAO,iBAAiB,OAAO,QAAQ;KACxC,CAAC;KACF;KAEL,CAAC;;;;;;CASJ,AAAQ,qBAAqB,QAAkD;AAE7E,MAAI,CAAC,0BAA0B,OAAO,EAAE;AACtC,UAAO,MACL,kFAAkF,KAAK,UAAU,OAAO,GACzG;AACD;;AAGF,MAAI,CAAC,OACH;EAIF,MAAM,EAAE,mBAAmB,eAAgB,GAAG,oBAAoB;AAGlE,MAAI,mBAAmB,mBAAmB,OACxC,QAAO;WACE,mBAAmB,mBAAmB,MAC/C,QAAO,gBAAgB,QAAQ,EAAE;OAC5B;AACL,UAAO,MAAM,oDAAoD,KAAK,UAAU,OAAO,GAAG;AAC1F;;;CAIJ,AAAQ,2BAA2B,UAAoB,QAAoB;AACzE,MAAI,CAAC,OAAQ;EAEb,IAAII;AAEJ,MAAI,MAAM,QAAQ,OAAO,EAAE;AAEzB,UAAO,MACL,gFAAgF,KAAK,UAAU,OAAO,GACvG;AACD,iBAAc;IACZ,mBAAmB,mBAAmB;IACtC,MAAM;IACP;aACQ,OAAO,WAAW,UAAU;AACrC,UAAO,MACL,iFAAiF,KAAK,UAAU,OAAO,GACxG;AACD,iBAAc;IACZ,mBAAmB,mBAAmB;IACtC,OAAO,OAAO;IACd,MAAM,OAAO;IACb,SAAS,OAAO;IACjB;SACI;AACL,UAAO,MAAM,oDAAoD,KAAK,UAAU,OAAO,GAAG;AAC1F;;AAGF,YAAU,kBAAkB,SAAS,MAAM,EACzC,aACD,CAAC;;CAGJ,AAAQ,MAAM,QAAa,cAAsB,SAAuC;AACtF,OAAK,QAAQ,cAAc,QAAQ;;;;;;;;;;ACngCvC,IAAa,yBAAb,cAA4CC,oBAAa;CAcvD,YACE,uBACA,aAAuD,kBACvD,UACA;AACA,SAAO;OAbF,WAA0B;OAC1B,SAAc;GACnB,MAAM;GACN,MAAM;GACN,UAAU;GACV,MAAM;GACP;AAQC,OAAK,wBAAwB;AAC7B,OAAK,WAAW;AAChB,OAAK,aAAa;AAClB,OAAK,WAAW;;CAGlB,MAAM,GAAG,MAAa;AACpB,SAAO,MAAM,4EAA4E;EAEzF,MAAM,aAAa,kBAAkB,CAAC,yBAAyB,CAAC;EAGhE,MAAM,cAAc,KAAK,sBAAsB,eAAe,KAAK;AAEnE,MAAI,CAAC,eAAe,CAAC,YAAY,KAAK;AACpC,UAAO,MACL,yFACD;GACD,MAAM,cAAc;IAAE,MAAM,EAAE;IAAE,QAAQ,EAAE;IAAE;AAC5C,OAAI,aAAa,UAAU;AACzB,YAAQ,eAAe,YAAY,SAAU,MAAM,YAAY,MAAM,YAAY,OAAO,CAAC;AACzF;;AAEF,UAAO,QAAQ,QAAQ,CAAC,YAAY,MAAM,YAAY,OAAO,CAAC;;EAShE,MAAM,aAAa,qBANG;GACpB,KAAK,YAAY;GACjB,QAAQ,YAAY,UAAU,EAAE;GAChC,YAAY,KAAK;GAClB,CAEqD;AAEtD,MAAI,KAAK,SACP,QAAO,KAAK,sBAAsB,kBAChC,aACA,YACA,KAAK,UACL,WACD;MAID,QAAO,KAAK,sBAAsB,sBAAsB,YAAY;;CAIxE,QAAQ,GAAG,MAAa;AACtB,SAAO,MAAM,8EAA8E;EAE3F,MAAM,aAAa,kBAAkB,CAAC,yBAAyB,CAAC;EAGhE,MAAM,cAAc,KAAK,sBAAsB,eAAe,KAAK;AAEnE,MAAI,CAAC,eAAe,CAAC,YAAY,KAAK;AACpC,UAAO,MACL,2FACD;GACD,MAAM,cAAc;IAAE,MAAM,EAAE;IAAE,QAAQ,EAAE;IAAE;AAC5C,OAAI,aAAa,UAAU;AACzB,YAAQ,eAAe,YAAY,SAAU,MAAM,YAAY,MAAM,YAAY,OAAO,CAAC;AACzF;;AAEF,UAAO,QAAQ,QAAQ,CAAC,YAAY,MAAM,YAAY,OAAO,CAAC;;EAShE,MAAM,aAAa,qBANG;GACpB,KAAK,YAAY;GACjB,QAAQ,YAAY,UAAU,EAAE;GAChC,YAAY,KAAK;GAClB,CAEqD;AAEtD,MAAI,KAAK,SACP,QAAO,KAAK,sBAAsB,kBAChC,aACA,YACA,KAAK,UACL,WACD;MAID,QAAO,KAAK,sBAAsB,sBAAsB,YAAY;;CAIxE,UAAU;AAER,OAAK,KAAK,MAAM;;CAGlB,UAAU;AAER,OAAK,KAAK,MAAM;;CAGlB,IAAI,UAA0B;AAC5B,OAAK,KAAK,MAAM;AAChB,MAAI,UAAU;AACZ,WAAQ,eAAe,SAAS,KAAK,CAAC;AACtC;;AAEF,SAAO,QAAQ,SAAS;;CAG1B,QAAQ,UAA0B;AAEhC,MAAI,UAAU;AACZ,WAAQ,eAAe,SAAS,KAAK,CAAC;AACtC;;AAEF,SAAO,QAAQ,SAAS;;CAG1B,KAAK,UAA0B;AAE7B,MAAI,UAAU;AACZ,WAAQ,eAAe,SAAS,KAAK,CAAC;AACtC;;AAEF,SAAO,QAAQ,SAAS;;CAG1B,iBAAiB,UAA0B;AACzC,MAAI,UAAU;AACZ,WAAQ,eAAe,SAAS,KAAK,CAAC;AACtC;;AAEF,SAAO,QAAQ,SAAS;;CAG1B,OAAO,UAA0B;AAC/B,MAAI,UAAU;AACZ,WAAQ,eAAe,SAAS,KAAK,CAAC;AACtC;;AAEF,SAAO,QAAQ,SAAS;;CAG1B,SAAS,UAA0B;AACjC,MAAI,UAAU;AACZ,WAAQ,eAAe,SAAS,KAAK,CAAC;AACtC;;AAEF,SAAO,QAAQ,SAAS;;CAG1B,WAAW,SAAc,UAA0B;AACjD,MAAI,UAAU;AACZ,WAAQ,eAAe,SAAS,KAAK,CAAC;AACtC;;AAEF,SAAO,QAAQ,SAAS;;CAG1B,QAAQ;CAIR,SAAS;CAIT,OAAO,OAAoB;AACzB,MAAI,UAAU,QAAQ,UAAU,OAC9B,QAAO;AAET,MAAI,OAAO,UAAU,SACnB,QAAO,IAAI,MAAM,QAAQ,MAAM,KAAK,CAAC;AAEvC,MAAI,OAAO,UAAU,SACnB,QAAO,MAAM,UAAU;AAEzB,MAAI,OAAO,UAAU,UACnB,QAAO,QAAQ,MAAM;AAEvB,MAAI,iBAAiB,KACnB,QAAO,IAAI,MAAM,aAAa,CAAC;AAEjC,SAAO,IAAI,OAAO,MAAM,CAAC;;CAG3B,SAAS,YAA4B;AACnC,SAAO,KAAK,WAAW,QAAQ,MAAM,KAAK,CAAC;;CAG7C,OAAO,KAAa,QAAwB;AAC1C,MAAI,CAAC,UAAU,OAAO,WAAW,EAC/B,QAAO;EAET,IAAI,QAAQ;AACZ,SAAO,IAAI,QAAQ,aAAa;AAC9B,OAAI,SAAS,OAAO,OAClB,QAAO;AAET,UAAO,KAAK,OAAO,OAAO,SAAS;IACnC;;;;;;;;;;AC7NN,IAAa,oBAAb,MAA+B;CAI7B,cAAc;OAHG,uBAAuB;AAItC,OAAK,YAAY,cAAc,aAAa;;;;;CAM9C,kBACE,aACA,YACA,UACA,gBAAwB,SACxB,YACc;AACd,SAAO,MAAM,iDAAiD;EAG9D,MAAM,WAAW,UADE,WAAW,WACQ,GAAG;AAMzC,SAAO,KAAK,aACV,aACA,YACA,UACA,UACA,eACA,WACD;;;;;;CAOH,sBAAsB,aAA8C;AAClE,SAAO,MAAM,4EAA4E;EAEzF,MAAM,UAAU,IAAIC,qBAAc;AAGlC,EAAC,QAAgB,OAAO,SACtB,WACA,UACA;AACA,UAAO,IAAI,SAAS,YAAY;AAC9B,YAAQ,KAAK,aAAa;AACxB,aAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;MACjB;KACF,CAAC,KAAK,WAAW,SAAS;;AAI9B,UAAQ,eAAe;GACrB,MAAM,WAAW,YAAY;AAC7B,OAAI,SACF,UAAS,MAAM,EAAE,EAAE,EAAE,CAAC;AAExB,WAAQ,KAAK,MAAM;IACnB;AAEF,SAAO;;;;;;;CAQT,AAAQ,aACN,aACA,YACA,UACA,UACA,eACA,YACc;EACd,MAAM,UAAU,IAAIA,qBAAc;EAGlC,IAAIC,aAAkB;EACtB,IAAIC,eAAoB;AAIxB,EAAC,QAAgB,OAAO,SACtB,WACA,UACA;AACA,UAAO,IAAI,SAAS,SAAS,WAAW;AACtC,YAAQ,KAAK,aAAa;AACxB,aAAQ,CAAC,YAAY,aAAa,CAAC;MACnC;AACF,YAAQ,KAAK,UAAU,UAAU;AAC/B,YAAO,MAAM;MACb;KACF,CAAC,KAAK,WAAW,SAAS;;AAI9B,GAAC,YAAY;AACX,OAAI;IACF,MAAM,WAAW,MAAM,KAAK,eAC1B,YACA,UACA,UACA,eACA,WACD;AAED,QAAI,CAAC,UAAU;KACb,MAAM,MAAM,YAAY,OAAO,WAAW,OAAO;AACjD,YAAO,KAAK,gEAAgE,MAAM;AAElF,WAAM,IAAI,MAAM,6DAA6D,MAAM;;IAIrF,MAAM,kBAAkB,KAAK,oBAAoB,SAAS,OAAO;AAGjE,iBAAa,gBAAgB;AAC7B,mBAAe,gBAAgB;AAG/B,YAAQ,eAAe;AAErB,SAAI,gBAAgB,OAClB,SAAQ,KAAK,UAAU,gBAAgB,OAAO;AAIhD,SAAI,YAAY,SACd,aAAY,SAAS,MAAM,gBAAgB,MAAM,gBAAgB,OAAO;AAI1E,SAAI,MAAM,QAAQ,gBAAgB,KAAK,CACrC,MAAK,MAAM,OAAO,gBAAgB,KAChC,SAAQ,KAAK,UAAU,IAAI;cAEpB,gBAAgB,KACzB,SAAQ,KAAK,UAAU,gBAAgB,KAAK;AAI9C,aAAQ,KAAK,MAAM;MACnB;YACK,OAAO;AACd,YAAQ,eAAe;AAErB,SAAI,YAAY,SACd,aAAY,SAAS,MAAoB;AAG3C,aAAQ,KAAK,SAAS,MAAM;MAC5B;;MAEF;AAEJ,SAAO;;;;;CAMT,MAAc,eACZ,YACA,UACA,UACA,eACA,YACA;AACA,SAAO,MAAM,sBAAsB;GACjC,iBAAiB;IACf,SAAS,SAAS;IAClB,QAAQ,SAAS;IACjB,MAAM;IACM;IACZ,aAAa;IACb,qBAAqB,KAAK;IACX;IACf,MAAMC,uBAAS;IACf;IACD;GACD,WAAW,KAAK;GACjB,CAAC;;;;;CAMJ,AAAQ,oBAAoB,QAA2B;AACrD,MAAI,CAAC,OACH,QAAO;GAAE,MAAM,EAAE;GAAE,QAAQ,EAAE;GAAE;AAIjC,MAAI,OAAO,SAAS,UAAa,OAAO,WAAW,OACjD,QAAO;GACL,MAAM,OAAO;GACb,QAAQ,OAAO;GAChB;AAIH,SAAO;GACL,MAAM;GACN,QAAQ,EAAE;GACX;;;;;;;;;;;;ACvNL,IAAa,8BAAb,MAAyC;CAKvC,YAAY,UAAoB;OAJf,uBAAuB;AAKtC,OAAK,WAAW;AAChB,OAAK,YAAY,cAAc,aAAa;;;;;;;CAQ9C,MAAM,2BAA2B,YAA4C;AAC3E,SAAO,MAAM,qEAAqE;AAElF,MAAI;GACF,MAAM,WAAW,MAAM,sBAAsB;IAC3C,iBAAiB;KACf,SAAS,KAAK,SAAS;KACvB,QAAQ,KAAK,SAAS;KACtB,MAAM;KACN;KACA,aAAa;KACb,qBAAqB,KAAK;KAC1B,eAAe;KACf,MAAMC,uBAAS;KAChB;IACD,WAAW,KAAK;IACjB,CAAC;AAEF,OAAI,CAAC,UAAU;AACb,WAAO,KAAK,0EAA0E;AACtF,WAAO,EAAE,QAAQ,EAAE,EAAE;;AAIvB,UAAO,EACL,QAAQ,SAAS,UAAU,EAAE,EAC9B;WACM,OAAO;AACd,UAAO,MAAM,6DAA6D,MAAM;AAEhF,UAAO,EAAE,QAAQ,EAAE,EAAE;;;;;;;;AC5B3B,MAAM,8BAA8B;AACpC,MAAM,mBAAmB;AACzB,MAAM,iBAAiB;AAEvB,IAAa,wBAAb,cAA2C,sBAAsB;CAK/D,YAAY,SAAsC,EAAE,EAAE;AACpD,QAAM,UAAU,OAAO;OALR,uBAAuB;AAMtC,OAAK,OAAO,OAAO,QAAQ,cAAc;AACzC,OAAK,YAAY,IAAI,mBAAmB;;CAG1C,OAAsC;AACpC,SAAO,CACL,IAAI,4BAA4B;GAC9B,MAAM;GACN,mBAAmB,CAAC,4BAA4B;GAChD,OAAO;IAEL,IAAI,gCAAgC;KAClC,MAAM;KACN,mBAAmB,CAAC,iBAAiB;KACrC,QAAQ,kBAAuB,KAAK,mBAAmB,cAAc;KACtE,CAAC;IAEF,IAAI,gCAAgC;KAClC,MAAM;KACN,mBAAmB,CAAC,eAAe;KACnC,QAAQ,kBAAuB,KAAK,qBAAqB,cAAc;KACxE,CAAC;IAEF,IAAI,gCAAgC;KAClC,MAAM;KACN,mBAAmB,CAAC,eAAe;KACnC,QAAQ,kBAAuB,KAAK,mBAAmB,cAAc;KACtE,CAAC;IAEF,IAAI,gCAAgC;KAClC,MAAM;KACN,mBAAmB,CAAC,iBAAiB;KACrC,QAAQ,kBAAuB,KAAK,aAAa,cAAc;KAChE,CAAC;IAEF,IAAI,gCAAgC;KAClC,MAAM;KACN,mBAAmB,CAAC,eAAe;KACnC,QAAQ,kBAAuB,KAAK,aAAa,cAAc;KAChE,CAAC;IAEF,IAAI,gCAAgC;KAClC,MAAM;KACN,mBAAmB,CAAC,iBAAiB;KACrC,QAAQ,kBAAuB,KAAK,uBAAuB,cAAc;KAC1E,CAAC;IAEF,IAAI,gCAAgC;KAClC,MAAM;KACN,mBAAmB,CAAC,eAAe;KACnC,QAAQ,kBAAuB,KAAK,uBAAuB,cAAc;KAC1E,CAAC;IACH;GACF,CAAC,CACH;;CAGH,AAAQ,qBAAqB,qBAA+B;AAC1D,SAAO,MAAM,wDAAwD;AAErE,MAAI,KAAK,gBAAgB,oBAAoB,EAAE;AAC7C,UAAO,MAAM,yEAAyE;AACtF,UAAO;;AAIT,MAAI,oBAAoB,aAAa,oBAAoB,UAAU,OACjE;OAAI,CAACC,YAAU,oBAAoB,UAAU,MAAM,EAAE;AACnD,SAAK,MAAM,oBAAoB,WAAW,SAAS,KAAK,iBAAiB,aAAa,CAAC;AACvF,WAAO,MAAM,iEAAiE;;;AAKlF,MAAI,oBAAoB,aAAa,oBAAoB,UAAU,SACjE;OAAI,CAACA,YAAU,oBAAoB,UAAU,QAAQ,EAAE;AACrD,SAAK,MAAM,oBAAoB,WAAW,WAAW,KAAK,mBAAmB,aAAa,CAAC;AAC3F,WAAO,MAAM,mEAAmE;;;AAKpF,MAAI,oBAAoB,aAAa,oBAAoB,UAAU,SACjE;OAAI,CAACA,YAAU,oBAAoB,UAAU,QAAQ,EAAE;AACrD,SAAK,MAAM,oBAAoB,WAAW,WAAW,KAAK,mBAAmB,aAAa,CAAC;AAC3F,WAAO,MAAM,mEAAmE;;;AAKpF,MAAI,oBAAoB,aAAa,oBAAoB,UAAU,MACjE;OAAI,CAACA,YAAU,oBAAoB,UAAU,KAAK,EAAE;AAClD,SAAK,MAAM,oBAAoB,WAAW,QAAQ,KAAK,gBAAgB,aAAa,CAAC;AACrF,WAAO,MAAM,gEAAgE;;;AAKjF,MAAI,oBAAoB,aAAa,oBAAoB,UAAU,KACjE;OAAI,CAACA,YAAU,oBAAoB,UAAU,IAAI,EAAE;AACjD,SAAK,MAAM,oBAAoB,WAAW,OAAO,KAAK,eAAe,aAAa,CAAC;AACnF,WAAO,MAAM,+DAA+D;;;AAIhF,OAAK,oBAAoB,oBAAoB;AAC7C,SAAO,MAAM,iEAAiE;AAE9E,SAAO;;CAIT,AAAQ,mBAAmB,iBAA2B;AACpD,SAAO,MAAM,yDAAyD;AAEtE,MAAI,KAAK,gBAAgB,gBAAgB,EAAE;AACzC,UAAO,MAAM,qEAAqE;AAClF,UAAO;;AAIT,OAAK,2BAA2B,gBAAgB;EAGhD,MAAM,yBAAyB,KAAK,2BAA2B,gBAAgB;AAE/E,OAAK,oBAAoB,gBAAgB;AAEzC,SAAO,MAAM,kEAAkE;AAC/E,SAAO;;CAIT,AAAQ,mBAAmB,iBAA2B;AACpD,SAAO,MAAM,4EAA4E;AAKzF,SAD+B,KAAK,2BAA2B,gBAAgB;;CAKjF,AAAQ,2BAA2B,iBAA4B;AAE7D,MAAI,gBAAgB,aAAa,gBAAgB,UAAU,OACzD;OAAI,CAACA,YAAU,gBAAgB,UAAU,MAAM,EAAE;AAC/C,SAAK,MAAM,gBAAgB,WAAW,SAAS,KAAK,iBAAiB,aAAa,CAAC;AACnF,WAAO,MAAM,6DAA6D;;;AAK9E,MAAI,gBAAgB,aAAa,gBAAgB,UAAU,SACzD;OAAI,CAACA,YAAU,gBAAgB,UAAU,QAAQ,EAAE;AACjD,SAAK,MAAM,gBAAgB,WAAW,WAAW,KAAK,mBAAmB,aAAa,CAAC;AACvF,WAAO,MAAM,+DAA+D;;;AAKhF,MAAI,gBAAgB,aAAa,gBAAgB,UAAU,SACzD;OAAI,CAACA,YAAU,gBAAgB,UAAU,QAAQ,EAAE;AACjD,SAAK,MAAM,gBAAgB,WAAW,WAAW,KAAK,mBAAmB,aAAa,CAAC;AACvF,WAAO,MAAM,+DAA+D;;;AAKhF,MAAI,gBAAgB,aAAa,gBAAgB,UAAU,MACzD;OAAI,CAACA,YAAU,gBAAgB,UAAU,KAAK,EAAE;AAC9C,SAAK,MAAM,gBAAgB,WAAW,QAAQ,KAAK,gBAAgB,aAAa,CAAC;AACjF,WAAO,MAAM,4DAA4D;;;AAK7E,MAAI,gBAAgB,aAAa,gBAAgB,UAAU,KACzD;OAAI,CAACA,YAAU,gBAAgB,UAAU,IAAI,EAAE;AAC7C,SAAK,MAAM,gBAAgB,WAAW,OAAO,KAAK,eAAe,aAAa,CAAC;AAC/E,WAAO,MAAM,2DAA2D;;;;CAM9E,AAAQ,aAAa,WAAqB;AACxC,SAAO,MAAM,mDAAmD;AAEhE,MAAI,KAAK,gBAAgB,UAAU,EAAE;AACnC,UAAO,MAAM,+DAA+D;AAC5E,UAAO;;AAIT,OAAK,qBAAqB,UAAU;AAEpC,OAAK,oBAAoB,UAAU;AAEnC,SAAO,MAAM,4DAA4D;AACzE,SAAO;;CAIT,AAAQ,aAAa,WAAqB;AACxC,SAAO,MAAM,mDAAmD;AAEhE,MAAI,KAAK,gBAAgB,UAAU,EAAE;AACnC,UAAO,MAAM,+DAA+D;AAC5E,UAAO;;AAIT,OAAK,qBAAqB,UAAU;AAEpC,OAAK,oBAAoB,UAAU;AAEnC,SAAO,MAAM,4DAA4D;AACzE,SAAO;;CAIT,AAAQ,qBAAqB,WAAsB;AAEjD,MAAI,UAAU,aAAa,UAAU,UAAU,OAC7C;OAAI,CAACA,YAAU,UAAU,UAAU,MAAM,EAAE;AACzC,SAAK,MAAM,UAAU,WAAW,SAAS,KAAK,iBAAiB,OAAO,CAAC;AACvE,WAAO,MAAM,uDAAuD;;;AAKxE,MAAI,UAAU,aAAa,UAAU,UAAU,SAC7C;OAAI,CAACA,YAAU,UAAU,UAAU,QAAQ,EAAE;AAC3C,SAAK,MAAM,UAAU,WAAW,WAAW,KAAK,mBAAmB,OAAO,CAAC;AAC3E,WAAO,MAAM,yDAAyD;;;AAK1E,MAAI,UAAU,aAAa,UAAU,UAAU,eAC7C;OAAI,CAACA,YAAU,UAAU,UAAU,cAAc,EAAE;AACjD,SAAK,MAAM,UAAU,WAAW,iBAAiB,KAAK,8BAA8B,CAAC;AACrF,WAAO,MAAM,+DAA+D;;;AAKhF,MAAI,UAAU,aAAa,UAAU,UAAU,KAC7C;OAAI,CAACA,YAAU,UAAU,UAAU,IAAI,EAAE;AACvC,SAAK,MAAM,UAAU,WAAW,OAAO,KAAK,eAAe,OAAO,CAAC;AACnE,WAAO,MAAM,qDAAqD;;;;CAMxE,AAAQ,uBAAuB,qBAA+B;AAC5D,SAAO,MACL,0FACD;AAGD,SAAO;;CAIT,AAAQ,uBAAuB,qBAA+B;AAC5D,SAAO,MACL,0FACD;AAGD,SAAO;;CAGT,AAAQ,iBAAiB,YAAsD;EAC7E,MAAM,OAAO;AAEb,UAAQ,kBAA4B;AAClC,UAAO,SAAS,MAAgD,GAAG,MAAa;IAE9E,IAAIC,cAAwC;AAC5C,QAAI;AACF,mBAAc,KAAK,eAAe,KAAK;aAChC,OAAO;AACd,YAAO,MAAM,qDAAqD,MAAM;;AAG1E,QAAI,CAAC,eAAe,CAAC,YAAY,KAAK;AAEpC,YAAO,MAAM,4DAA4D,KAAK;AAC9E,YAAO,cAAc,MAAM,MAAM,KAAK;;IAGxC,MAAMC,aAA+B;KACnC,KAAK,YAAY;KACjB,QAAQ,YAAY,UAAU,EAAE;KAChC;KACD;AAGD,QAAI,KAAK,SAAS,cAAc,QAAQ;KACtC,MAAM,aAAa,kBAAkB,CAAC,wBAAwB,CAAC;AAE/D,YAAO,iBAAiB;MACtB,0BAA0B;AACxB,cAAO,KAAK,UAAU,sBAAsB,YAAY;;MAE1D,iBAAiB;MACjB,yBAAyB;OACvB,MAAM,WAAW,UAAU,WAAW;AACtC,cAAO,UAAU,qBACf,KAAK,YACC,cAAc,MAAM,MAAM,KAAK,EACrC;QACE,MAAM;QACN,MAAMC,uBAAS;QACf,WAAW;QACX,aAAa,YAAY;QACzB,aAAa;QACb,qBAAqB,KAAK;QACd;QACZ,eAAe;QAChB,GACA,aAAa;AACZ,eAAO,KAAK,kBACV,aACA,YACA,UACA,SACA,WACD;SAEJ;;MAEJ,CAAC;eACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,cAAc,MAAM,MAAM,KAAK;KAC3D,oBAAoB,EAAE,oBAAoB;MAExC,MAAM,WAAW,UAAU,WAAW;AACtC,aAAO,UAAU,qBACf,KAAK,YACC,cAAc,MAAM,MAAM,KAAK,EACrC;OACE,MAAM;OACN,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,qBAAqB,KAAK;OAC1B,aAAa;OACD;OACZ;OACD,GACA,aAAa;AACZ,cAAO,KAAK,yBACV,UACA,eACA,aACA,MACA,KACD;QAEJ;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAGF,QAAO,cAAc,MAAM,MAAM,KAAK;;;;CAM9C,AAAQ,mBAAmB,YAAsD;EAC/E,MAAM,OAAO;AAEb,UAAQ,oBAA8B;AACpC,UAAO,SAAS,QAAkD,GAAG,MAAa;IAEhF,IAAIF,cAAwC;AAC5C,QAAI;AACF,mBAAc,KAAK,eAAe,KAAK;aAChC,OAAO;AACd,YAAO,MAAM,uDAAuD,MAAM;;AAG5E,QAAI,CAAC,eAAe,CAAC,YAAY,KAAK;AAEpC,YAAO,MAAM,8DAA8D,KAAK;AAChF,YAAO,gBAAgB,MAAM,MAAM,KAAK;;IAG1C,MAAMC,aAA+B;KACnC,KAAK,YAAY;KACjB,QAAQ,YAAY,UAAU,EAAE;KAChC;KACD;AAGD,QAAI,KAAK,SAAS,cAAc,QAAQ;KACtC,MAAM,aAAa,kBAAkB,CAAC,wBAAwB,CAAC;AAE/D,YAAO,iBAAiB;MACtB,0BAA0B;AACxB,cAAO,KAAK,UAAU,sBAAsB,YAAY;;MAE1D,iBAAiB;MACjB,yBAAyB;OACvB,MAAM,WAAW,UAAU,WAAW;AACtC,cAAO,UAAU,qBACf,KAAK,YACC,gBAAgB,MAAM,MAAM,KAAK,EACvC;QACE,MAAM;QACN,MAAMC,uBAAS;QACf,WAAW;QACX,aAAa,YAAY;QACzB,aAAa;QACb,qBAAqB,KAAK;QACd;QACZ,eAAe;QAChB,GACA,aAAa;AACZ,eAAO,KAAK,kBACV,aACA,YACA,UACA,WACA,WACD;SAEJ;;MAEJ,CAAC;eACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,gBAAgB,MAAM,MAAM,KAAK;KAC7D,oBAAoB,EAAE,oBAAoB;MAExC,MAAM,WAAW,UAAU,WAAW;AACtC,aAAO,UAAU,qBACf,KAAK,YACC,gBAAgB,MAAM,MAAM,KAAK,EACvC;OACE,MAAM;OACN,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,qBAAqB,KAAK;OAC1B,aAAa;OACD;OACZ;OACD,GACA,aAAa;AACZ,cAAO,KAAK,yBACV,UACA,iBACA,aACA,MACA,KACD;QAEJ;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAGF,QAAO,gBAAgB,MAAM,MAAM,KAAK;;;;CAMhD,AAAQ,+BAA+B;EACrC,MAAM,OAAO;AAEb,UAAQ,0BAAoC;AAC1C,UAAO,SAAS,cAA0B,UAA0B;IAClE,MAAM,aAAa,EAAE,YAAY,QAAiB;AAGlD,QAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;KACtB,0BAA0B;AACxB,aAAO,KAAK,8BAA8B,SAAS;;KAErD,iBAAiB;KACjB,yBAAyB;AACvB,aAAO,UAAU,qBACf,KAAK,YACC,sBAAsB,MAAM,MAAM,CAAC,SAAS,CAAC,EACnD;OACE,MAAM;OACN,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa;OACb,aAAa,YAAY;OACzB,qBAAqB,KAAK;OACd;OACZ,eAAe;OAChB,GACA,aAAa;AACZ,cAAO,KAAK,+BAA+B,UAAU,SAAS;QAEjE;;KAEJ,CAAC;aACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,sBAAsB,MAAM,MAAM,CAAC,SAAS,CAAC;KACzE,oBAAoB,EAAE,oBAAoB;AAExC,aAAO,UAAU,qBACf,KAAK,YACC,sBAAsB,MAAM,MAAM,CAAC,SAAS,CAAC,EACnD;OACE,MAAM;OACN,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa;OACb,aAAa,YAAY;OACzB,qBAAqB,KAAK;OACd;OACZ;OACD,GACA,aAAa;AACZ,cAAO,KAAK,qCACV,UACA,uBACA,UACA,KACD;QAEJ;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAGF,QAAO,sBAAsB,MAAM,MAAM,CAAC,SAAS,CAAC;;;;CAM5D,AAAQ,mBAAmB,YAAsD;EAC/E,MAAM,OAAO;AAEb,UAAQ,oBAA8B;AACpC,UAAO,SAAS,QAA0B,UAAqB;IAC7D,MAAM,aAAa,EAAE,YAAY;AAEjC,QAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;KACtB,0BAA0B;AACxB,UAAI,UAAU;AACZ,eAAQ,eAAe,SAAS,KAAK,CAAC;AACtC;;AAEF,aAAO,QAAQ,SAAS;;KAE1B,iBAAiB;KACjB,yBAAyB;AACvB,aAAO,UAAU,qBACf,KAAK,YACC,gBAAgB,MAAM,MAAM,CAAC,SAAS,CAAC,EAC7C;OACE,MAAM,UAAU,WAAW;OAC3B,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa;OACb,aAAa,YAAY;OACzB,qBAAqB,KAAK;OACd;OACZ,eAAe;OAChB,GACA,aAAa;AAEZ,WAAI,UAAU;AACZ,gBAAQ,eAAe,SAAS,KAAK,CAAC;AACtC;;AAEF,cAAO,QAAQ,SAAS;QAE3B;;KAEJ,CAAC;aACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,gBAAgB,MAAM,MAAM,CAAC,SAAS,CAAC;KACnE,oBAAoB,EAAE,oBAAoB;AACxC,aAAO,UAAU,qBACf,KAAK,YACC,gBAAgB,MAAM,MAAM,CAAC,SAAS,CAAC,EAC7C;OACE,MAAM,UAAU,WAAW;OAC3B,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa;OACb,aAAa,YAAY;OACzB,qBAAqB,KAAK;OACd;OACZ;OACD,GACA,aAAa;AACZ,cAAO,KAAK,4BACV,UACA,iBACA,UACA,KACD;QAEJ;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAEF,QAAO,gBAAgB,MAAM,MAAM,CAAC,SAAS,CAAC;;;;CAMtD,AAAQ,gBAAgB,YAAsD;EAC5E,MAAM,OAAO;AAEb,UAAQ,iBAA2B;AACjC,UAAO,SAAS,KAAuB,UAAqB;IAC1D,MAAM,aAAa,EAAE,YAAY;AAEjC,QAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;KACtB,0BAA0B;AACxB,UAAI,UAAU;AACZ,eAAQ,eAAe,SAAS,KAAK,CAAC;AACtC;;AAEF,aAAO,QAAQ,SAAS;;KAE1B,iBAAiB;KACjB,yBAAyB;AACvB,aAAO,UAAU,qBACf,KAAK,YACC,aAAa,MAAM,MAAM,CAAC,SAAS,CAAC,EAC1C;OACE,MAAM,UAAU,WAAW;OAC3B,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa;OACb,aAAa,YAAY;OACzB,qBAAqB,KAAK;OACd;OACZ,eAAe;OAChB,GACA,aAAa;AAEZ,WAAI,UAAU;AACZ,gBAAQ,eAAe,SAAS,KAAK,CAAC;AACtC;;AAEF,cAAO,QAAQ,SAAS;QAE3B;;KAEJ,CAAC;aACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,aAAa,MAAM,MAAM,CAAC,SAAS,CAAC;KAChE,oBAAoB,EAAE,oBAAoB;AACxC,aAAO,UAAU,qBACf,KAAK,YACC,aAAa,MAAM,MAAM,CAAC,SAAS,CAAC,EAC1C;OACE,MAAM,UAAU,WAAW;OAC3B,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa;OACb,aAAa,YAAY;OACzB,qBAAqB,KAAK;OACd;OACZ;OACD,GACA,aAAa;AACZ,cAAO,KAAK,4BAA4B,UAAU,cAAc,UAAU,KAAK;QAElF;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAEF,QAAO,aAAa,MAAM,MAAM,CAAC,SAAS,CAAC;;;;CAMnD,AAAQ,eAAe,YAAsD;EAC3E,MAAM,OAAO;AAEb,UAAQ,gBAA0B;AAChC,UAAO,SAAS,IAAsB,UAAqB;IACzD,MAAM,aAAa,EAAE,YAAY;AAEjC,QAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;KACtB,0BAA0B;AACxB,UAAI,UAAU;AACZ,eAAQ,eAAe,SAAS,KAAK,CAAC;AACtC;;AAEF,aAAO,QAAQ,SAAS;;KAE1B,iBAAiB;KACjB,yBAAyB;AACvB,aAAO,UAAU,qBACf,KAAK,YACC,YAAY,MAAM,MAAM,CAAC,SAAS,CAAC,EACzC;OACE,MAAM,UAAU,WAAW;OAC3B,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa;OACb,aAAa,YAAY;OACzB,qBAAqB,KAAK;OACd;OACZ,eAAe;OAChB,GACA,aAAa;AAEZ,WAAI,UAAU;AACZ,gBAAQ,eAAe,SAAS,KAAK,CAAC;AACtC;;AAEF,cAAO,QAAQ,SAAS;QAE3B;;KAEJ,CAAC;aACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,YAAY,MAAM,MAAM,CAAC,SAAS,CAAC;KAC/D,oBAAoB,EAAE,oBAAoB;AACxC,aAAO,UAAU,qBACf,KAAK,YACC,YAAY,MAAM,MAAM,CAAC,SAAS,CAAC,EACzC;OACE,MAAM,UAAU,WAAW;OAC3B,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa;OACb,aAAa,YAAY;OACzB,qBAAqB,KAAK;OACd;OACZ;OACD,GACA,aAAa;AACZ,cAAO,KAAK,4BAA4B,UAAU,aAAa,UAAU,KAAK;QAEjF;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAEF,QAAO,YAAY,MAAM,MAAM,CAAC,SAAS,CAAC;;;;CAMlD,AAAQ,4BACN,UACA,gBACA,UACA,WACK;AACL,MAAI,UAAU;GACZ,MAAM,mBAAmB,UAAwB;AAC/C,QAAI,OAAO;AACT,YAAO,MACL,gDAAgD,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GAC5F;AACD,SAAI;AACF,gBAAU,QAAQ,SAAS,MAAM;OAC/B,MAAMC,6BAAe;OACrB,SAAS,MAAM;OAChB,CAAC;cACKC,SAAO;AACd,aAAO,MAAM,8CAA8CA,QAAM;;WAE9D;AACL,YAAO,MACL,iEAAiE,UAAU,cAAc,CAAC,GAC3F;AACD,SAAI;AACF,gBAAU,kBAAkB,SAAS,MAAM,EACzC,aAAa,EAAE,SAAS,MAAM,EAC/B,CAAC;AACF,gBAAU,QAAQ,SAAS,MAAM,EAAE,MAAMD,6BAAe,IAAI,CAAC;cACtDC,SAAO;AACd,aAAO,MAAM,sDAAsDA,QAAM;;;AAG7E,WAAO,SAAS,MAAM;;AAGxB,UAAO,eAAe,KAAKC,WAAS,gBAAgB;SAC/C;GAGL,MAAM,SAAS,eAAe,KAAKA,UAAQ;AAG3C,OAAI,UAAU,OAAO,OAAO,SAAS,WACnC,QAAO,OACJ,WAAW;AACV,WAAO,MACL,iEAAiE,UAAU,cAAc,CAAC,GAC3F;AACD,QAAI;AACF,eAAU,kBAAkB,SAAS,MAAM,EACzC,aAAa,EAAE,SAAS,MAAM,EAC/B,CAAC;AACF,eAAU,QAAQ,SAAS,MAAM,EAAE,MAAMF,6BAAe,IAAI,CAAC;aACtD,OAAO;AACd,YAAO,MAAM,sDAAsD,MAAM;;KAE3E,CACD,OAAO,UAAiB;AACvB,WAAO,MACL,gDAAgD,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GAC5F;AACD,QAAI;AACF,eAAU,QAAQ,SAAS,MAAM;MAC/B,MAAMA,6BAAe;MACrB,SAAS,MAAM;MAChB,CAAC;aACKC,SAAO;AACd,YAAO,MAAM,8CAA8CA,QAAM;;AAEnE,UAAM;KACN;QACC;AAEL,WAAO,MACL,kEAAkE,UAAU,cAAc,CAAC,GAC5F;AACD,QAAI;AACF,eAAU,kBAAkB,SAAS,MAAM,EACzC,aAAa,EAAE,SAAS,MAAM,EAC/B,CAAC;AACF,eAAU,QAAQ,SAAS,MAAM,EAAE,MAAMD,6BAAe,IAAI,CAAC;aACtD,OAAO;AACd,YAAO,MAAM,sDAAsD,MAAM;;AAE3E,WAAO;;;;CAKb,eAAe,MAAuC;AACpD,MAAI,KAAK,WAAW,EAAG,QAAO;EAE9B,MAAM,WAAW,KAAK;AAGtB,MAAI,OAAO,aAAa,UAAU;GAChC,MAAMG,SAA4B;IAChC,KAAK;IACL,UAAU,OAAO,KAAK,KAAK,SAAS,OAAO,aAAa,KAAK,KAAK,SAAS,KAAK;IACjF;AACD,OAAI,MAAM,QAAQ,KAAK,GAAG,CACxB,QAAO,SAAS,KAAK;YACZ,KAAK,SAAS,KAAK,OAAO,KAAK,OAAO,WAC/C,QAAO,SAAS,CAAC,KAAK,GAAG;AAE3B,UAAO;;AAIT,MAAI,OAAO,aAAa,YAAY,SAAS,IAC3C,QAAO;GACL,KAAK,SAAS;GACd,QAAQ,SAAS;GACjB,UAAU,SAAS,aAAa,OAAO,KAAK,OAAO,aAAa,KAAK,KAAK;GAC3E;AAGH,SAAO;;CAGT,AAAQ,yBACN,UACA,eACA,aACA,MACA,WACK;AAGL,MAFoB,CAAC,CAAC,YAAY,UAEjB;GAEf,MAAM,mBAAmB,YAAY;GACrC,MAAM,mBAAmB,OAA0B,SAAe,WAA2B;AAC3F,QAAI,OAAO;AACT,YAAO,MACL,6DAA6D,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GACzG;AACD,SAAI;AACF,gBAAU,QAAQ,SAAS,MAAM;OAC/B,MAAMH,6BAAe;OACrB,SAAS,MAAM;OAChB,CAAC;cACKC,SAAO;AACd,aAAO,MAAM,8CAA8CA,QAAM;;WAE9D;AACL,YAAO,MACL,8EAA8E,UAAU,cAAc,CAAC,GACxG;AACD,SAAI;AACF,WAAK,2BAA2B,UAAU,SAAS,OAAO;AAC1D,gBAAU,QAAQ,SAAS,MAAM,EAAE,MAAMD,6BAAe,IAAI,CAAC;cACtDC,SAAO;AACd,aAAO,MAAM,sDAAsDA,QAAM;;;AAG7E,WAAO,iBAAiB,OAAO,SAAS,OAAO;;AAIjD,OAAI;IACF,MAAM,WAAW,KAAK;AAGtB,QAFwB,OAAO,aAAa,YAAY,SAAS,OAE1C,SAAS,SAE9B,MAAK,KAAK;KAAE,GAAG,KAAK;KAAI,UAAU;KAAiB;SAC9C;KAEL,MAAM,gBAAgB,KAAK,WAAW,QAAQ,OAAO,QAAQ,WAAW;AACxE,SAAI,iBAAiB,EACnB,MAAK,iBAAiB;;YAGnB,OAAO;AACd,WAAO,MAAM,qDAAqD,OAAO,KAAK;;AAGhF,UAAO,cAAc,MAAMC,WAAS,KAAK;SACpC;GAEL,MAAM,SAAS,cAAc,MAAMA,WAAS,KAAK;AAKjD,OAAI,UAAU,OAAO,OAAO,OAAO,YAAY;IAE7C,MAAME,gBAAuB,EAAE;IAC/B,IAAIC,eAAoB;AAExB,WACG,GAAG,UAAU,UAAiB;AAC7B,YAAO,MACL,sDAAsD,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GAClG;AACD,SAAI;AACF,gBAAU,QAAQ,SAAS,MAAM;OAC/B,MAAML,6BAAe;OACrB,SAAS,MAAM;OAChB,CAAC;cACKC,SAAO;AACd,aAAO,MAAM,8CAA8CA,QAAM;;MAEnE,CACD,GAAG,WAAW,WAAgB;AAC7B,oBAAe;MACf,CACD,GAAG,WAAW,QAAa;AAC1B,mBAAc,KAAK,IAAI;MACvB,CACD,GAAG,aAAa;AACf,YAAO,MACL,0DAA0D,UAAU,cAAc,CAAC,GACpF;AACD,SAAI;AACF,WAAK,2BAA2B,UAAU,eAAe,aAAa;AACtE,gBAAU,QAAQ,SAAS,MAAM,EAAE,MAAMD,6BAAe,IAAI,CAAC;cACtD,OAAO;AACd,aAAO,MAAM,8CAA8C,MAAM;;MAEnE;;AAGN,UAAO;;;CAIX,kBACE,aACA,YACA,UACA,gBAAwB,SACxB,YACc;AACd,SAAO,KAAK,UAAU,kBACpB,aACA,YACA,UACA,eACA,WACD;;CAGH,sBAAsB,aAA8C;AAClE,SAAO,KAAK,UAAU,sBAAsB,YAAY;;CAG1D,AAAQ,qCACN,UACA,uBACA,UACA,WACK;AACL,MAAI,UAAU;GAEZ,MAAM,mBAAmB,OAAqB,eAAgC;AAC5E,QAAI,OAAO;AACT,YAAO,MACL,4DAA4D,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GACxG;AACD,SAAI;AACF,gBAAU,QAAQ,SAAS,MAAM;OAC/B,MAAMA,6BAAe;OACrB,SAAS,MAAM;OAChB,CAAC;cACKC,SAAO;AACd,aAAO,MAAM,8CAA8CA,QAAM;;WAE9D;AACL,YAAO,MACL,6EAA6E,UAAU,cAAc,CAAC,GACvG;AACD,SAAI;AACF,gBAAU,kBAAkB,SAAS,MAAM,EACzC,aAAa;OACX,WAAW;OACX,eAAe,CAAC,CAAC;OAClB,EACF,CAAC;AACF,gBAAU,QAAQ,SAAS,MAAM,EAAE,MAAMD,6BAAe,IAAI,CAAC;cACtDC,SAAO;AACd,aAAO,MAAM,oEAAoEA,QAAM;;;AAG3F,WAAO,SAAS,OAAO,WAAW;;AAGpC,UAAO,sBAAsB,KAAKC,WAAS,gBAAgB;QAK3D,QAFgB,sBAAsB,KAAKA,UAAQ,CAGhD,MAAM,eAA+B;AACpC,UAAO,MACL,6EAA6E,UAAU,cAAc,CAAC,GACvG;AACD,OAAI;AACF,cAAU,kBAAkB,SAAS,MAAM,EACzC,aAAa;KACX,WAAW;KACX,eAAe,CAAC,CAAC;KAClB,EACF,CAAC;AACF,cAAU,QAAQ,SAAS,MAAM,EAAE,MAAMF,6BAAe,IAAI,CAAC;YACtD,OAAO;AACd,WAAO,MAAM,oEAAoE,MAAM;;AAEzF,UAAO;IACP,CACD,OAAO,UAAiB;AACvB,UAAO,MACL,4DAA4D,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GACxG;AACD,OAAI;AACF,cAAU,QAAQ,SAAS,MAAM;KAC/B,MAAMA,6BAAe;KACrB,SAAS,MAAM;KAChB,CAAC;YACKC,SAAO;AACd,WAAO,MAAM,8CAA8CA,QAAM;;AAEnE,SAAM;IACN;;CAIR,AAAQ,8BAA8B,UAA0B;AAC9D,SAAO,MACL,uFACD;EAED,MAAM,iBAAiB,IAAI,uBAAuB,MAAM,OAAO;AAE/D,MAAI,UAAU;AACZ,WAAQ,eAAe,SAAS,MAAM,eAAe,CAAC;AACtD;;AAEF,SAAO,QAAQ,QAAQ,eAAe;;CAGxC,AAAQ,+BAA+B,UAAoB,UAAqB;AAC9E,SAAO,MAAM,8DAA8D;EAG3E,MAAM,iBAAiB,IAAI,uBAAuB,MAAM,QAAQ,SAAS;AAEzE,MAAI,UAAU;AACZ,WAAQ,eAAe,SAAS,MAAM,eAAe,CAAC;AACtD;QAEA,QAAO,QAAQ,QAAQ,eAAe;;;;;;;;;;CAY1C,AAAQ,2BAA2B,oBAA8B;EAC/D,MAAM,OAAO;EAGb,SAAS,oBAA+B,GAAG,MAAa;GACtD,MAAM,aAAa,EAAE,QAAQ,oBAAoB;AAEjD,OAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;IACtB,4BAA4B,IAAI,mBAAmB,GAAG,KAAK;IAC3D,oBAAoB,EAAE,oBAAoB;AACxC,YAAO,UAAU,qBACf,KAAK,YACC,IAAI,mBAAmB,GAAG,KAAK,EACrC;MACE,MAAM;MACN,MAAMF,uBAAS;MACf,WAAW;MACX,aAAa,YAAY;MACzB,aAAa;MACb,qBAAqB,KAAK;MAC1B;MACA;MACD,GACA,aAAa;MACZ,MAAM,aAAa,IAAI,mBAAmB,GAAG,KAAK;AAGlD,iBAAW,GAAG,YAAY,kBAAuB;AAC/C,WAAI;AACF,kBAAU,kBAAkB,SAAS,MAAM,EACzC,aAAa;SAAE,WAAW;SAAM;SAAe,EAChD,CAAC;AACF,kBAAU,QAAQ,SAAS,MAAM,EAAE,MAAMC,6BAAe,IAAI,CAAC;eACvD;AACN,eAAO,MAAM,wDAAwD;;QAEvE;AAGF,iBAAW,GAAG,UAAU,QAAe;AACrC,WAAI;AACF,eAAO,MACL,wDAAwD,IAAI,UAC7D;AACD,kBAAU,QAAQ,SAAS,MAAM;SAC/B,MAAMA,6BAAe;SACrB,SAAS,IAAI;SACd,CAAC;eACI;AACN,eAAO,MAAM,4CAA4C;;QAE3D;AAEF,aAAO;OAEV;;IAEH,UAAUD,uBAAS;IACpB,CAAC;AAIJ,OAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;IACtB,0BAA0B;AAExB,YAAO,IAAI,uBAAuB,MAAM,aAAa;;IAEvD,iBAAiB;IACjB,yBAAyB;AACvB,YAAO,UAAU,qBACf,KAAK,YACC,IAAI,mBAAmB,GAAG,KAAK,EACrC;MACE,MAAM;MACN,MAAMA,uBAAS;MACf,WAAW;MACX,aAAa,YAAY;MACzB,aAAa;MACb,qBAAqB,KAAK;MAC1B;MACA,eAAe;MAChB,GACA,aAAa;MAEZ,MAAM,uBAAuB,mBAAmB;OAI9C,YAAY,GAAG,oBAA2B;QAExC,MAAM,aAAa,KAAK,MAAM,KAAK,UAAU,mBAAmB,CAAC;AACjE,YAAI,WAAW,MAAM,WAAW,GAAG,QAAQ;AACzC,oBAAW,GAAG,OAAO,OAAO;AAC5B,oBAAW,GAAG,OAAO,OAAO;mBACnB,WAAW,IAAI;AAExB,oBAAW,GAAG,OAAO;AACrB,oBAAW,GAAG,OAAO;;AAIvB,cAAM,GAAG,WAAW;aAhBd,2BAA2B;AAmBjC,aAAK,oBAAoB,IAAI,4BAA4B,SAAS;;OAIpE,GAAG,OAAe,UAAyB;AACzC,YAAI,CAAC,KAAK,kBACR,QAAO,MAAM,GAAG,OAAO,SAAS;AAIlC,YAAI,UAAU,aAAa,CAAC,KAAK,0BAA0B;AACzD,cAAK,kBACF,2BAA2B,WAAW,CACtC,MAAM,EAAE,aAAa;AACpB,cAAI,WAAW,OACb,SAAQ,eAAe;AACrB,oBAAS,KAAK,MAAM,OAAO;AAC3B,gBAAK,2BAA2B;YAChC;WAEJ,CACD,OAAO,QAAQ;AACd,iBAAO,MACL,6DACA,IACD;WACD;AACJ,gBAAO;;AAIT,YAAI,UAAU,WAAW,CAAC,KAAK,yBAG7B,QAAO;AAIT,eAAO,MAAM,GAAG,OAAO,SAAS;;;MAIpC,MAAM,iBAAiB,IAAI,eAAe,GAAG,KAAK;AAGlD,qBAAe,YAAY,UAAU,SAAgB,GAEnD;AAEF,aAAO;OAEV;;IAEJ,CAAC;AAIJ,UAAO,IAAI,mBAAmB,GAAG,KAAK;;EAIxC,MAAM,cAAc,OAAO,oBAAoB,mBAAmB,CAAC,QAChE,QAAQ,CAAC;GAAC;GAAU;GAAQ;GAAY,CAAC,SAAS,IAAI,CACxD;AACD,OAAK,MAAM,cAAc,YACvB,CAAC,oBAA4B,cAAc,mBAAmB;AAIhE,SAAO,eAAe,oBAAoB,WAAW,mBAAmB,UAAU;AAElF,SAAO;;CAGT,AAAQ,2BACN,UACA,QACA,QACM;AACN,MAAI,CAAC,OAAQ;EAGb,IAAIO,cAAmB,EAAE;AAEzB,MAAI,MAAM,QAAQ,OAAO,CAEvB,eAAc;GACZ,UAAU,OAAO;GACjB,MAAM;GACN,QAAQ,UAAU,EAAE;GACrB;WACQ,OAAO,iBAAiB,OAEjC,eAAc;GACZ,cAAc,OAAO;GACrB,UAAU,OAAO;GACjB,cAAc,OAAO;GACtB;MAGD,eAAc;AAGhB,YAAU,kBAAkB,SAAS,MAAM,EACzC,aACD,CAAC;;CAGJ,AAAQ,MACN,QACA,cACA,SACM;AACN,OAAK,QAAQ,cAAc,QAAQ;;;;;;;;;;;;;;;;AC71CvC,IAAa,qBAAb,cAAwC,sBAAsB;CAI5D,YAAY,SAAmC,EAAE,EAAE;AACjD,QAAM,OAAO,OAAO;OAHd,8BAAc,IAAI,KAAa;AAIrC,OAAK,OAAO,OAAO,QAAQ,cAAc;AAEzC,OAAK,qBAAqB;;CAG5B,OAAsC;AACpC,SAAO,CACL,IAAI,4BAA4B;GAC9B,MAAM;GACN,mBAAmB,CAAC,IAAI;GACxB,QAAQ,kBAAuB,KAAK,gBAAgB,cAAc;GACnE,CAAC,CACH;;CAGH,AAAQ,sBAA4B;AAClC,MAAI,iBAAiB,EAAE;AAcrB,UAAO,MACL,kGACD;AAED,OAAI;AAEF,YAAQ,MAAM;AACd,WAAO,MAAM,+CAA+C;YACrD,KAAK;AACZ,WAAO,MAAM,wDAAwD,IAAI;;QAI3E,QAAO,MACL,kGACD;;CAIL,AAAQ,gBAAgB,WAAqB;AAC3C,SAAO,MAAM,+CAA+C,KAAK,KAAK,OAAO;AAE7E,MAAI,KAAK,gBAAgB,UAAU,EAAE;AACnC,UAAO,MAAM,4DAA4D;AACzE,UAAO;;AAGT,MAAI,KAAK,SAAS,cAAc,QAAQ;AACtC,UAAO,MAAM,yEAAyE;AACtF,UAAO;;EAGT,MAAM,kBAAkB,UAAU,OAAO,UAAU;EACnD,MAAM,gBAAgB,UAAU,OAAO,UAAU;EAEjD,MAAM,OAAO;AAKb,YAAU,OAAO,UAAU,UAAU,SAAU,GAAG,MAAa;AAC7D,UAAO,KAAK,eAAe,WAAW,iBAAiB,MAAM,KAAK;;AAGpE,YAAU,OAAO,UAAU,QAAQ,SAAU,GAAG,MAAa;AAC3D,UAAO,KAAK,eAAe,SAAS,eAAe,MAAM,KAAK;;AAGhE,OAAK,oBAAoB,UAAU;AACnC,SAAO;;CAGT,AAAQ,wBACN,YACA,iBACA,eACA;EACA,MAAM,UAAU,GAAG,gBAAgB,OAAO,GAAG;AAE7C,MAAI,CAAC,KAAK,YAAY,IAAI,QAAQ,EAAE;AAClC,QAAK,YAAY,IAAI,QAAQ;AAC7B,SAAM,kBAAkB;AAIxB,UAAO,KACL,6FACA;IACE,WAAW;IACX,QAAQ,gBAAgB;IACxB,SAAS,gBAAgB;IACzB;IACD,CACF;GAED,MAAM,8BAAa,IAAI,OAAO,EAAC,SAAS;GACxC,MAAM,wBAAwB,UAAU,yBAAyB;AACjE,UAAO,KAAK,2CAA2C,cAAc,EACnE,uBACD,CAAC;AAEF,SAAM,kBAAkB;AACxB,gCAA6B;IAC3B,uBAAuB,yBAAyB;IAChD;IACD,CAAC;AAGF,OAAI,KAAK,YAAY,OAAO,KAAM;AAChC,WAAO,MACL,wDAAwD,KAAK,YAAY,KAAK,WAC/E;AACD,SAAK,YAAY,OAAO;;;;CAK9B,AAAQ,eACN,YACA,gBACA,MACA,eACK;AAEL,MAAI,KAAK,sBAAsB,cAAc,CAC3C,QAAO,eAAe,MAAM,eAAe,KAAK;EAGlD,MAAM,kBAAkB,UAAU,oBAAoB;AAEtD,MAAI,CAAC,gBACH,QAAO,eAAe,MAAM,eAAe,KAAK;EAGlD,MAAM,iBAAiB,gBAAgB,QAAQ,SAAS,4BAA4B;AAIpF,MAHiB,gBAAgB,QAAQ,SAAS,sBAAsB,KAGvDC,uBAAS,UAAU,mBAAmB,uBAErD,MAAK,wBAAwB,YAAY,iBAAiB,cAAc;AAK1E,SAAO,eAAe,MAAM,eAAe,KAAK;;CAGlD,AAAQ,sBAAsB,eAA6B;AAEzD,SAAO,iBAAiB,cAAc;;;;;;;AC3K1C,IAAa,8BAAb,cAAiD,sBAAsB;CAQrE,YAAY,SAA4C,EAAE,EAAE;AAC1D,QAAM,gBAAgB,OAAO;OARd,uBAAuB;AAStC,OAAK,OAAO,OAAO,QAAQ,cAAc;AACzC,OAAK,YAAY,cAAc,aAAa;;CAG9C,OAAsC;AACpC,SAAO,CACL,IAAI,4BAA4B;GAC9B,MAAM;GACN,mBAAmB;IAAC;IAAO;IAAO;IAAO;IAAO;IAAM;GACtD,QAAQ,kBACN,KAAK,yBAAyB,cAAc;GAC/C,CAAC,CACH;;CAGH,AAAQ,yBACN,WAC2B;AAC3B,MAAI,KAAK,gBAAgB,UAAU,EAAE;AACnC,UAAO,MAAM,8EAA8E;AAC3F,UAAO;;AAIT,OAAK,qBAAqB,UAAU;AACpC,OAAK,kBAAkB,UAAU;AACjC,OAAK,qBAAqB,UAAU;AAGpC,MAAI,UAAU,QAAQ;AACpB,QAAK,MAAM,WAAW,UAAU,KAAK,mBAAmB,CAAC;AACzD,UAAO,MAAM,mDAAmD;;AAIlE,MAAI,UAAU,MAAM;AAClB,QAAK,MAAM,WAAW,QAAQ,KAAK,iBAAiB,CAAC;AACrD,UAAO,MAAM,iDAAiD;;AAGhE,OAAK,oBAAoB,UAAU;AACnC,SAAO,MAAM,sEAAsE;AAEnF,SAAO;;CAGT,AAAQ,oBAAoB;EAC1B,MAAM,OAAO;AAEb,UAAQ,mBAA6B;AACnC,UAAO,SAAS,OAAkB,GAAG,MAAa;IAEhD,IAAIC,eAAyC;AAC7C,QAAI;AACF,oBAAe,KAAK,gBAAgB,KAAK;aAClC,OAAO;AACd,YAAO,MAAM,4DAA4D,MAAM;;AAGjF,QAAI,CAAC,gBAAgB,CAAC,aAAa,OAAO;AAExC,YAAO,MACL,qFACA,KACD;AACD,YAAO,eAAe,MAAM,MAAM,KAAK;;IAGzC,MAAMC,gBAAqC;KACzC,OAAO,aAAa;KACpB,mBACE,OAAO,aAAa,sBAAsB,aACtC,8BACA,aAAa;KACnB,SAAS,aAAa;KACvB;IAGD,IAAIC;AAEJ,QAAI;AACF,kBAAa,qBAAqB,cAAc;aACzC,OAAO;AACd,YAAO,MAAM,kEAAkE,MAAM;AACrF,YAAO,eAAe,MAAM,MAAM,KAAK;;AAIzC,QAAI,KAAK,SAAS,cAAc,QAAQ;KACtC,MAAM,aAAa,kBAAkB,CAAC,8BAA8B,CAAC;AAErE,YAAO,iBAAiB;MACtB,0BAA0B;AAExB,WADoB,CAAC,CAAC,aAAa,UAClB;AACf,gBAAQ,eAAe,aAAa,SAAU,MAAM,OAAU,CAAC;AAC/D;aAEA;;MAGJ,iBAAiB;MACjB,yBAAyB;AAEvB,cAAO,UAAU,qBACf,KAAK,YACC,eAAe,MAAM,MAAM,KAAK,EACtC;QACE,MAAM;QACN,MAAMC,uBAAS;QACf,WAAW;QACX,aAAa;QACb,qBAAqB,KAAK;QACd;QACZ,eAAe;QAChB,GACA,aAAa;AACZ,eAAO,KAAK,mBAAmB,cAAc,YAAY,UAAU,WAAW;SAEjF;;MAEJ,CAAC;eACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,eAAe,MAAM,MAAM,KAAK;KAC5D,oBAAoB,EAAE,oBAAoB;AACxC,aAAO,UAAU,qBACf,KAAK,YACC,eAAe,MAAM,MAAM,KAAK,EACtC;OACE,MAAM;OACN,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ;OACD,GACA,aAAa;AACZ,cAAO,KAAK,0BACV,UACA,gBACA,cACA,MACA,KACD;QAEJ;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAGF,QAAO,eAAe,MAAM,MAAM,KAAK;;;;CAM/C,AAAQ,kBAAkB;EACxB,MAAM,OAAO;AAEb,UAAQ,iBAA2B;AACjC,UAAO,SAAS,KAAgB,GAAG,MAAa;IAE9C,IAAIC,aAAqC;AACzC,QAAI;AACF,kBAAa,KAAK,cAAc,KAAK;aAC9B,OAAO;AACd,YAAO,MAAM,0DAA0D,MAAM;;AAG/E,QAAI,CAAC,cAAc,CAAC,WAAW,SAAS;AAEtC,YAAO,KACL,mFACA,KACD;AACD,YAAO,aAAa,MAAM,MAAM,KAAK;;IAGvC,MAAMC,aAAgC;KACpC,SAAS,WAAW;KACpB,oBAAoB,WAAW;KAC/B,SAAS,WAAW;KACrB;AAGD,QAAI,KAAK,SAAS,cAAc,QAAQ;KACtC,MAAM,aAAa,kBAAkB,CAAC,8BAA8B,CAAC;AAErE,YAAO,iBAAiB;MACtB,0BAA0B;AAExB,WADoB,CAAC,CAAC,WAAW,UAChB;AACf,gBAAQ,eAAe,WAAW,SAAU,MAAM,OAAU,CAAC;AAC7D;aAEA;;MAGJ,iBAAiB;MACjB,yBAAyB;AAEvB,cAAO,UAAU,qBACf,KAAK,YACC,aAAa,MAAM,MAAM,KAAK,EACpC;QACE,MAAM;QACN,MAAMF,uBAAS;QACf,WAAW;QACX,aAAa;QACb,qBAAqB,KAAK;QACd;QACZ,eAAe;QAChB,GACA,aAAa;AACZ,eAAO,KAAK,iBAAiB,YAAY,YAAY,UAAU,WAAW;SAE7E;;MAEJ,CAAC;eACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,aAAa,MAAM,MAAM,KAAK;KAC1D,oBAAoB,EAAE,oBAAoB;AAExC,aAAO,UAAU,qBACf,KAAK,YACC,aAAa,MAAM,MAAM,KAAK,EACpC;OACE,MAAM;OACN,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ;OACD,GACA,aAAa;AACZ,cAAO,KAAK,wBACV,UACA,cACA,YACA,MACA,KACD;QAEJ;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAGF,QAAO,aAAa,MAAM,MAAM,KAAK;;;;CAM7C,gBAAgB,MAAuC;AACrD,MAAI,KAAK,SAAS,EAAG,QAAO;EAE5B,MAAM,QAAQ,KAAK;EACnB,MAAM,oBAAoB,KAAK;AAE/B,MAAI,OAAO,UAAU,SAAU,QAAO;EAEtC,MAAMG,SAA4B;GAChC;GACA;GACA,UAAU,OAAO,KAAK,KAAK,SAAS,OAAO,aAAa,KAAK,KAAK,SAAS,KAAK;GACjF;AAGD,MACE,KAAK,UAAU,KACf,OAAO,KAAK,OAAO,YACnB,OAAO,KAAK,KAAK,SAAS,OAAO,WAEjC,QAAO,UAAU,KAAK;WACb,KAAK,UAAU,KAAK,OAAO,KAAK,OAAO,SAChD,QAAO,UAAU,KAAK;AAGxB,SAAO;;CAGT,cAAc,MAAqC;AACjD,MAAI,KAAK,SAAS,EAAG,QAAO;EAK5B,MAAMC,SAA0B;GAC9B,SAJc,KAAK;GAKnB,oBAJyB,KAAK;GAK9B,UAAU,OAAO,KAAK,KAAK,SAAS,OAAO,aAAa,KAAK,KAAK,SAAS,KAAK;GACjF;AAGD,MACE,KAAK,UAAU,KACf,OAAO,KAAK,OAAO,YACnB,OAAO,KAAK,KAAK,SAAS,OAAO,WAEjC,QAAO,UAAU,KAAK;WACb,KAAK,UAAU,KAAK,OAAO,KAAK,OAAO,SAChD,QAAO,UAAU,KAAK;AAGxB,SAAO;;CAGT,AAAQ,0BACN,UACA,gBACA,cACA,MACA,WACK;AAGL,MAFoB,CAAC,CAAC,aAAa,UAElB;GAEf,MAAM,mBAAmB,aAAa;GACtC,MAAM,mBAAmB,OAAqB,YAAkB;AAC9D,QAAI,MACF,KAAI;AACF,YAAO,MACL,mDAAmD,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GAC/F;AACD,UAAK,gCAAgC,UAAU,MAAM;AACrD,eAAU,QAAQ,SAAS,MAAM;MAC/B,MAAMC,6BAAe;MACrB,SAAS,MAAM;MAChB,CAAC;aACKC,SAAO;AACd,YAAO,MAAM,oDAAoDA,QAAM;;QAGzE,KAAI;AACF,YAAO,MACL,oEAAoE,UAAU,cAAc,CAAC,GAC9F;AACD,UAAK,2BAA2B,UAAU,QAAQ;AAClD,eAAU,QAAQ,SAAS,MAAM,EAAE,MAAMD,6BAAe,IAAI,CAAC;aACtDC,SAAO;AACd,YAAO,MAAM,oDAAoDA,QAAM;;AAG3E,WAAO,iBAAiB,OAAO,QAAQ;;AAGzC,OAAI;AAEF,SAAK,KAAK,SAAS,KAAK;YACjB,OAAO;AACd,WAAO,MAAM,2DAA2D,OAAO,KAAK;;AAGtF,OAAI;AAEF,WADe,eAAe,MAAMC,WAAS,KAAK;YAE3CC,OAAY;AACnB,QAAI;AACF,YAAO,MACL,wDAAwD,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GACpG;AACD,UAAK,gCAAgC,UAAU,MAAM;AACrD,eAAU,QAAQ,SAAS,MAAM;MAC/B,MAAMH,6BAAe;MACrB,SAAS,MAAM;MAChB,CAAC;aACKC,SAAO;AACd,YAAO,MAAM,oDAAoDA,QAAM;;AAEzE,UAAM;;QAIR,KAAI;GACF,MAAM,SAAS,eAAe,MAAMC,WAAS,KAAK;AAClD,OAAI;AACF,WAAO,MACL,oEAAoE,UAAU,cAAc,CAAC,GAC9F;AACD,SAAK,2BAA2B,UAAU,OAAO;AACjD,cAAU,QAAQ,SAAS,MAAM,EAAE,MAAMF,6BAAe,IAAI,CAAC;YACtD,OAAO;AACd,WAAO,MAAM,oDAAoD,MAAM;;AAGzE,UAAO;WACAG,OAAY;AACnB,OAAI;AACF,WAAO,MACL,mDAAmD,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GAC/F;AACD,SAAK,gCAAgC,UAAU,MAAM;AACrD,cAAU,QAAQ,SAAS,MAAM;KAC/B,MAAMH,6BAAe;KACrB,SAAS,MAAM;KAChB,CAAC;YACKC,SAAO;AACd,WAAO,MAAM,oDAAoDA,QAAM;;AAEzE,SAAM;;;CAKZ,AAAQ,wBACN,UACA,cACA,YACA,MACA,WACK;AAGL,MAFoB,CAAC,CAAC,WAAW,UAEhB;GAEf,MAAM,mBAAmB,WAAW;GACpC,MAAM,mBAAmB,OAAqB,UAAmB;AAC/D,QAAI,MACF,KAAI;AACF,YAAO,MACL,iDAAiD,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GAC7F;AACD,UAAK,gCAAgC,UAAU,MAAM;AACrD,eAAU,QAAQ,SAAS,MAAM;MAC/B,MAAMD,6BAAe;MACrB,SAAS,MAAM;MAChB,CAAC;aACKC,SAAO;AACd,YAAO,MAAM,oDAAoDA,QAAM;;QAGzE,KAAI;AACF,YAAO,MACL,kEAAkE,UAAU,cAAc,CAAC,GAC5F;AACD,UAAK,2BAA2B,UAAU,MAAM;AAChD,eAAU,QAAQ,SAAS,MAAM,EAAE,MAAMD,6BAAe,IAAI,CAAC;aACtDC,SAAO;AACd,YAAO,MAAM,oDAAoDA,QAAM;;AAG3E,WAAO,iBAAiB,OAAO,MAAM;;AAGvC,OAAI;AAEF,SAAK,KAAK,SAAS,KAAK;YACjB,OAAO;AACd,WAAO,MAAM,2DAA2D,OAAO,KAAK;;AAItF,UADe,aAAa,MAAMC,WAAS,KAAK;QAIhD,KAAI;GACF,MAAM,SAAS,aAAa,MAAMA,WAAS,KAAK;AAChD,OAAI;AACF,WAAO,MACL,kEAAkE,UAAU,cAAc,CAAC,GAC5F;AACD,SAAK,2BAA2B,UAAU,OAAO;AACjD,cAAU,QAAQ,SAAS,MAAM,EAAE,MAAMF,6BAAe,IAAI,CAAC;YACtD,OAAO;AACd,WAAO,MAAM,oDAAoD,MAAM;;AAEzE,UAAO;WACAG,OAAY;AACnB,OAAI;AACF,WAAO,MACL,iDAAiD,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GAC7F;AACD,SAAK,gCAAgC,UAAU,MAAM;AACrD,cAAU,QAAQ,SAAS,MAAM;KAC/B,MAAMH,6BAAe;KACrB,SAAS,MAAM;KAChB,CAAC;YACKC,SAAO;AACd,WAAO,MAAM,oDAAoDA,QAAM;;AAEzE,SAAM;;;CAKZ,MAAM,mBACJ,cACA,YACA,UACA,YACc;AACd,SAAO,MAAM,qDAAqD;EAGlE,MAAM,WAAW,MAAM,sBAAsB;GAC3C,iBAAiB;IACf,SAAS,SAAS;IAClB,QAAQ,SAAS;IACjB,MAAM;IACN,aAAa;IACb,qBAAqB,KAAK;IAC1B,eAAe;IACH;IACZ,MAAMN,uBAAS;IACf;IACD;GACD,WAAW,KAAK;GACjB,CAAC;EAEF,MAAM,cAAc,CAAC,CAAC,aAAa;AAEnC,MAAI,CAAC,UAAU;AACb,UAAO,KACL,oEAAoE,aAAa,QAClF;AAED,SAAM,IAAI,MACR,wEAAwE,aAAa,QACtF;;AAIH,MAAI,SAAS,UAAU,SAAS,OAAO,OAAO;GAC5C,IAAI,QAAQ,SAAS,OAAO;AAG5B,OAAI,KAAK,sBAAsB,SAAS,OAAO,MAAM,SAAS,oBAC5D,SAAQ,IAAI,KAAK,mBACf,SAAS,OAAO,MAAM,SACtB,SAAS,OAAO,MAAM,UACvB;YACQ,KAAK,sBAAsB,SAAS,OAAO,MAAM,SAAS,oBACnE,SAAQ,IAAI,KAAK,mBAAmB,SAAS,OAAO,MAAM,QAAQ;YACzD,KAAK,mBAAmB,SAAS,OAAO,MAAM,SAAS,iBAChE,SAAQ,IAAI,KAAK,gBAAgB,SAAS,OAAO,MAAM,SAAS,SAAS,OAAO,MAAM,KAAK;QACtF;AAEL,YAAQ,IAAI,MAAM,SAAS,OAAO,MAAM,QAAQ;AAChD,UAAM,OAAO,SAAS,OAAO,MAAM;;AAGrC,OAAI,aAAa;AACf,YAAQ,eAAe,aAAa,SAAU,MAAM,CAAC;AACrD;SAEA,OAAM;;EAKV,MAAM,SAAS,SAAS,OAAO,UAAU,SAAY,SAAS,OAAO,QAAQ,SAAS;AACtF,MAAI,aAAa;AACf,WAAQ,eAAe;AACrB,iBAAa,SAAU,MAAM,OAAO;KACpC;AACF;QAEA,QAAO;;CAIX,MAAM,iBACJ,YACA,YACA,UACA,YACc;AACd,SAAO,MAAM,mDAAmD;EAGhE,MAAM,WAAW,MAAM,sBAAsB;GAC3C,iBAAiB;IACf,SAAS,UAAU;IACnB,QAAQ,UAAU;IAClB,MAAM;IACN,aAAa;IACb,qBAAqB,KAAK;IAC1B,eAAe;IACH;IACZ,MAAMA,uBAAS;IACf;IACD;GACD,WAAW,KAAK;GACjB,CAAC;EAEF,MAAM,cAAc,CAAC,CAAC,WAAW;AAEjC,MAAI,CAAC,UAAU;AACb,UAAO,KAAK,gEAAgE;AAC5E,SAAM,IAAI,MAAM,oEAAoE;;AAItF,MAAI,SAAS,UAAU,SAAS,OAAO,OAAO;GAC5C,IAAI,QAAQ,SAAS,OAAO;AAG5B,OAAI,KAAK,sBAAsB,SAAS,OAAO,MAAM,SAAS,oBAC5D,SAAQ,IAAI,KAAK,mBAAmB,SAAS,OAAO,MAAM,QAAQ;QAC7D;AAEL,YAAQ,IAAI,MAAM,SAAS,OAAO,MAAM,QAAQ;AAChD,UAAM,OAAO,SAAS,OAAO,MAAM;;AAGrC,OAAI,aAAa;AACf,YAAQ,eAAe,WAAW,SAAU,MAAM,CAAC;AACnD;SAEA,OAAM;;EAKV,MAAM,SAAS,SAAS,OAAO,UAAU,SAAY,SAAS,OAAO,QAAQ,SAAS;AACtF,MAAI,aAAa;AACf,WAAQ,eAAe;AACrB,eAAW,SAAU,MAAM,OAAO;KAClC;AACF;QAEA,QAAO;;CAIX,AAAQ,2BAA2B,UAAoB,QAAoB;AACzE,MAAI,CAAC,OAAQ;EAEb,MAAM,cAAc,OAAO,WAAW,WAAW,EAAE,OAAO,QAAQ,GAAG;AAErE,YAAU,kBAAkB,SAAS,MAAM,EACzC,aACD,CAAC;;CAGJ,AAAQ,gCAAgC,UAAoB,OAAoB;EAC9E,MAAM,cAAc,EAClB,OAAO;GACL,MAAM,MAAM;GACZ,SAAS,MAAM;GAEf,GAAK,MAAc,aAAa,EAAE,WAAY,MAAc,WAAW;GACvE,GAAK,MAAc,QAAQ,EAAE,MAAO,MAAc,MAAM;GACzD,EACF;AAED,YAAU,kBAAkB,SAAS,MAAM,EACzC,aAAa,aACd,CAAC;;CAGJ,AAAQ,MAAM,QAAa,cAAsB,SAAuC;AACtF,OAAK,QAAQ,cAAc,QAAQ;;;;;;;;;;;ACtqBvC,IAAa,yBAAb,cAA4C,sBAAsB;CAGhE,YAAY,SAAuC,EAAE,EAAE;AACrD,QAAM,YAAY,OAAO;AACzB,OAAK,YAAY,cAAc,aAAa;;CAG9C,OAAsC;AACpC,SAAO,CACL,IAAI,4BAA4B;GAC9B,MAAM;GACN,mBAAmB;IAAC;IAAO;IAAO;IAAM;GACxC,QAAQ,kBAAwC,KAAK,oBAAoB,cAAc;GACxF,CAAC,CACH;;CAGH,AAAQ,oBAAoB,YAAsB;AAChD,SAAO,MACL,oEAAoE,KAAK,UAAU,SAAS,GAC7F;AAED,MAAI,KAAK,gBAAgB,WAAW,EAAE;AACpC,UAAO,MAAM,qEAAqE;AAClF,UAAO;;EAGT,MAAM,OAAO;AAEb,MAAI,WAAW,kBAAkB;GAC/B,MAAM,2BAA2B,WAAW;AAC5C,cAAW,mBAAmB,SAAU,SAAc;AACpD,WAAO,MAAM,kEAAkE,QAAQ;IACvF,MAAM,kBAAkB,EAAE,GAAG,SAAS;AAEtC,QAAI,KAAK,UAAU,SAAS,KAAK,cAAc,QAAQ;AACrD,YAAO,MACL,sFACD;AACD,qBAAgB,YAAY;AAC5B,YAAO,gBAAgB;AACvB,YAAO,MAAM,8CAA8C,gBAAgB;;AAE7E,WAAO,yBAAyB,gBAAgB;;AAElD,UAAO,MAAM,2DAA2D;;AAG1E,OAAK,oBAAoB,WAAW;AAEpC,SAAO,MAAM,6DAA6D;AAC1E,SAAO;;;;;;;;;;AC6BX,SAAS,wBAAyC;AAChD,QAAO;EACL,KAAK;EACL,QAAQ;EACR,SAAS,EAAE;EACZ;;;;;AAMH,SAAS,yBAA2C;AAClD,QAAO;EACL,QAAQ;EACR,YAAY;EACZ,SAAS,EAAE;EACX,UAAU;EACX;;AAGH,IAAa,uBAAb,MAAkC;CAGhC,YAAY,kBAAqC;OAFzC,qBAA0C,EAAE;AAGlD,MAAI,kBAAkB,MACpB,MAAK,qBAAqB,iBAAiB,MAAM,KAAK,cACpD,KAAK,iBAAiB,UAAU,CACjC;;CAIL,gBAAgB,UAAwC;EACtD,MAAMS,UAA6B,EAAE;AAErC,OAAK,MAAM,qBAAqB,KAAK,oBAAoB;GACvD,MAAM,SAAS,kBAAkB,SAAS;AAC1C,OAAI,OACF,SAAQ,KAAK,OAAO;;AAIxB,MAAI,QAAQ,SAAS,EACnB,UAAS,oBAAoB;GAC3B,aAAa;GACb;GACD;AAGH,SAAO;;CAGT,AAAQ,iBAAiB,WAA8C;EACrE,MAAM,EAAE,SAAS,WAAW;EAE5B,MAAM,kBAAkB,KAAK,eAAe,QAAQ;AACpD,MAAI,OAAO,SAAS,OAClB,SAAQ,SAAS;AACf,OAAI,CAAC,gBAAgB,KAAK,CACxB;AAIF,OAAI,KAAK,WACP,MAAK,aAAa,uBAAuB;AAG3C,OAAI,KAAK,YACP,MAAK,cAAc,wBAAwB;AAG7C,UAAO;IACL,MAAM;IACN,OAAO;IACP,QAAQ;IACR,aAAa,KAAK,kBAAkB,UAAU;IAC/C;;EAIL,MAAM,iBAAiB,KAAK,cAAc,SAAS,OAAO;EAC1D,MAAM,mBAAmB,KAAK,oBAAoB,QAAQ;AAE1D,UAAQ,SAAS;AACf,OAAI,CAAC,gBAAgB,KAAK,CACxB;AAIF,OADe,eAAe,KAAK,CAEjC,QAAO;IACL,MAAM,OAAO;IACb,OAAO;IACP,QAAQ;IACT;;;CAOP,AAAQ,cACN,SACA,QACkC;EAClC,MAAM,iBAAiB,KAAK,sBAAsB,OAAO;AAEzD,MAAI,QAAQ,SACV,QAAO,KAAK,sBAAsB,QAAQ,UAAU,eAAe;AAErE,MAAI,QAAQ,WACV,QAAO,KAAK,wBAAwB,QAAQ,YAAY,eAAe;AAEzE,MAAI,QAAQ,WACV,QAAO,KAAK,oBAAoB,QAAQ,YAAY,eAAe;AAErE,MAAI,QAAQ,QACV,QAAO,KAAK,qBAAqB,eAAe;AAElD,MAAI,QAAQ,SACV,QAAO,KAAK,sBAAsB,eAAe;AAGnD,eAAa;;CAGf,AAAQ,eAAe,SAAiD;EACtE,MAAMC,SAA4B,EAAE;AAGpC,SAAO,MAAM,SAAS,KAAK,SAASC,uBAAS,OAAO;AAEpD,MAAI,QAAQ,OAEV,KAAI,QAAQ,OAAO,WAAW,GAAG,QAE1B;GACL,MAAM,UAAU,QAAQ,OAAO,KAAK,WAAW,OAAO,aAAa,CAAC;AACpE,UAAO,MAAM,SAAS;IACpB,MAAM,aAAa,KAAK,YAAY,QAAQ,aAAa;AACzD,WAAO,aAAa,QAAQ,SAAS,WAAW,GAAG;KACnD;;AAIN,MAAI,QAAQ,YACV,KAAI;GACF,MAAM,UAAU,IAAI,OAAO,QAAQ,YAAY;AAC/C,UAAO,MAAM,SAAS;IACpB,MAAM,MAAM,KAAK,YAAY;AAC7B,QAAI,CAAC,IAAK,QAAO;AACjB,QAAI;KACF,MAAM,SAAS,IAAI,IAAI,IAAI;AAC3B,YAAO,QAAQ,KAAK,OAAO,SAAS;YAC9B;AACN,YAAO;;KAET;WACK,OAAO;AACd,SAAM,IAAI,MACR,yBAAyB,QAAQ,YAAY,KAAK,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GACzG;;AAIL,MAAI,QAAQ,KACV,KAAI;GACF,MAAM,cAAc,IAAI,OAAO,QAAQ,KAAK;AAC5C,UAAO,MAAM,SAAS;IACpB,MAAM,MAAM,KAAK,YAAY;AAC7B,QAAI,CAAC,IAAK,QAAO;AACjB,QAAI;KACF,MAAM,SAAS,IAAI,IAAI,IAAI;AAC3B,YAAO,YAAY,KAAK,OAAO,SAAS;YAClC;AACN,YAAO;;KAET;WACK,OAAO;AACd,SAAM,IAAI,MACR,yBAAyB,QAAQ,KAAK,KAAK,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GAClG;;AAIL,MAAI,OAAO,WAAW,EACpB,cAAa;AAEf,MAAI,OAAO,WAAW,EACpB,QAAO,OAAO;AAGhB,UAAQ,SAAS,OAAO,OAAO,UAAU,MAAM,KAAK,CAAC;;CAGvD,AAAQ,sBACN,UACA,gBACkC;AAClC,UAAQ,SAAS;GACf,IAAI,UAAU;AAGd,OAAI,KAAK,YAAY,KACnB,KAAI;IACF,IAAI;IACJ,MAAM,OAAO,KAAK,WAAW;AAE7B,QAAI,OAAO,SAAS,SAClB,KAAI;KACF,MAAM,UAAU,OAAO,KAAK,MAAM,SAAS,CAAC,SAAS,OAAO;AAC5D,eAAU,KAAK,MAAM,QAAQ;aACtB,GAAG;AAEV,YAAO;;QAGT,WAAU;IAGZ,MAAM,QAAQC,iBAAG,MAAM,SAAS,UAAU,eAAe;AAGzD,QAAI,OAAO,SAAS,YAAY,MAAM,SAAS,GAAG;KAChD,MAAM,YAAY,OAAO,KAAK,KAAK,UAAU,QAAQ,CAAC,CAAC,SAAS,SAAS;AACzE,UAAK,WAAW,OAAO;AACvB,eAAU;;YAEL,OAAO;AAMlB,OAAI,KAAK,aAAa,KACpB,KAAI;IACF,IAAI;IACJ,MAAM,OAAO,KAAK,YAAY;AAE9B,QAAI,OAAO,SAAS,SAClB,KAAI;KACF,MAAM,UAAU,OAAO,KAAK,MAAM,SAAS,CAAC,SAAS,OAAO;AAC5D,eAAU,KAAK,MAAM,QAAQ;aACtB,GAAG;AAEV,YAAO;;QAGT,WAAU;IAGZ,MAAM,QAAQA,iBAAG,MAAM,SAAS,UAAU,eAAe;AAGzD,QAAI,OAAO,SAAS,YAAY,MAAM,SAAS,GAAG;KAChD,MAAM,YAAY,OAAO,KAAK,KAAK,UAAU,QAAQ,CAAC,CAAC,SAAS,SAAS;AACzE,UAAK,YAAY,OAAO;AACxB,eAAU;;YAEL,OAAO;AAKlB,UAAO;;;CAIX,AAAQ,oBACN,YACA,gBACkC;EAClC,MAAM,cAAc,WAAW,aAAa;AAE5C,UAAQ,SAAS;GACf,IAAI,UAAU;AAGd,OAAI,KAAK,YAAY,SACnB;SAAK,MAAM,OAAO,OAAO,KAAK,KAAK,WAAW,QAAQ,CACpD,KAAI,IAAI,aAAa,KAAK,aAAa;AACrC,UAAK,WAAW,QAAQ,OAAO,eAAe,KAAK,WAAW,QAAQ,KAAK;AAC3E,eAAU;;;AAMhB,OAAI,KAAK,aAAa,SACpB;SAAK,MAAM,OAAO,OAAO,KAAK,KAAK,YAAY,QAAQ,CACrD,KAAI,IAAI,aAAa,KAAK,aAAa;AACrC,UAAK,YAAY,QAAQ,OAAO,eAAe,KAAK,YAAY,QAAQ,KAAK;AAC7E,eAAU;;;AAKhB,UAAO;;;CAIX,AAAQ,wBACN,YACA,gBACkC;AAClC,UAAQ,SAAS;AACf,OAAI,CAAC,KAAK,YAAY,IACpB,QAAO;AAGT,OAAI;IACF,MAAM,MAAM,IAAI,IAAI,KAAK,WAAW,IAAI;AACxC,QAAI,IAAI,aAAa,IAAI,WAAW,EAAE;KACpC,MAAM,WAAW,IAAI,aAAa,IAAI,WAAW;AACjD,SAAI,aAAa,MAAM;MACrB,MAAM,WAAW,eAAe,SAAS;AACzC,UAAI,aAAa,IAAI,YAAY,SAAS;AAC1C,WAAK,WAAW,MAAM,IAAI,UAAU;AACpC,aAAO;;;WAGL;AAIR,UAAO;;;CAIX,AAAQ,sBAAsB,gBAAkE;AAC9F,UAAQ,SAAS;GACf,IAAI,UAAU;AAGd,OAAI,KAAK,cAAc,KAAK,WAAW,SAAS,QAAW;IACzD,MAAM,OAAO,KAAK,WAAW;AAC7B,QAAI,OAAO,SAAS,SAClB,KAAI;KAEF,MAAM,cAAc,eADJ,OAAO,KAAK,MAAM,SAAS,CAAC,SAAS,OAAO,CACjB;AAC3C,UAAK,WAAW,OAAO,OAAO,KAAK,YAAY,CAAC,SAAS,SAAS;AAClE,eAAU;aACH,OAAO;AAEd,UAAK,WAAW,OAAO,OAAO,KAAK,eAAe,KAAK,CAAC,CAAC,SAAS,SAAS;AAC3E,eAAU;;SAEP;AACL,UAAK,WAAW,OAAO,OAAO,KAAK,eAAe,KAAK,UAAU,KAAK,CAAC,CAAC,CAAC,SACvE,SACD;AACD,eAAU;;;AAKd,OAAI,KAAK,eAAe,KAAK,YAAY,SAAS,QAAW;IAC3D,MAAM,OAAO,KAAK,YAAY;AAC9B,QAAI,OAAO,SAAS,SAClB,KAAI;KAEF,MAAM,cAAc,eADJ,OAAO,KAAK,MAAM,SAAS,CAAC,SAAS,OAAO,CACjB;AAC3C,UAAK,YAAY,OAAO,OAAO,KAAK,YAAY,CAAC,SAAS,SAAS;AACnE,eAAU;aACH,OAAO;AAEd,UAAK,YAAY,OAAO,OAAO,KAAK,eAAe,KAAK,CAAC,CAAC,SAAS,SAAS;AAC5E,eAAU;;SAEP;AACL,UAAK,YAAY,OAAO,OAAO,KAAK,eAAe,KAAK,UAAU,KAAK,CAAC,CAAC,CAAC,SACxE,SACD;AACD,eAAU;;;AAId,UAAO;;;CAIX,AAAQ,qBAAqB,gBAAkE;AAC7F,UAAQ,SAAS;AACf,OAAI,KAAK,YAAY,IACnB,KAAI;IACF,MAAM,SAAS,IAAI,IAAI,KAAK,WAAW,IAAI;AAC3C,WAAO,WAAW,eAAe,OAAO,SAAS;AACjD,SAAK,WAAW,MAAM,OAAO,UAAU;AACvC,WAAO;WACD;AAEN,SAAK,WAAW,MAAM,eAAe,KAAK,WAAW,IAAI;AACzD,WAAO;;AAGX,UAAO;;;CAIX,AAAQ,sBAAsB,QAA8C;AAC1E,UAAQ,OAAO,MAAf;GACE,KAAK,SACH,SAAQ,UAAU;AAGhB,WAAO,GAFQ,OAAO,cAAc,cACvB,OAAO,WAAW,SAAS,CAAC,OAAO,OAAO,MAAM,CAAC,CAAC,OAAO,MAAM,CACpD,UAAU,GAAG,GAAG,CAAC;;GAE7C,KAAK,OACH,SAAQ,UAAU;AAEhB,YADiB,OAAO,YAAY,KACpB,OAAO,MAAM,OAAO;;GAExC,KAAK,UACH,cAAa,OAAO;GACtB,QACE,SAAQ,UAAU;;;CAIxB,AAAQ,oBAAoB,SAAwC;AAClE,MAAI,QAAQ,SAAU,QAAO,YAAY,QAAQ;AACjD,MAAI,QAAQ,WAAY,QAAO,cAAc,QAAQ;AACrD,MAAI,QAAQ,WAAY,QAAO,UAAU,QAAQ;AACjD,MAAI,QAAQ,QAAS,QAAO;AAC5B,MAAI,QAAQ,SAAU,QAAO;AAC7B,SAAO;;CAGT,AAAQ,kBAAkB,WAAmC;AAC3D,SAAO,KAAK,UAAU,UAAU,QAAQ;;;;;;;;;;;ACrf5C,IAAa,uBAAb,cAA0C,sBAAsB;CAO9D,YAAY,SAAqC,EAAE,EAAE;AACnD,QAAM,SAAS,OAAO;OAPP,uBAAuB;AAQtC,OAAK,OAAO,OAAO,QAAQ,cAAc;AACzC,OAAK,YAAY,cAAc,aAAa;AAC5C,OAAK,kBAAkB,IAAI,qBAAqB,OAAO,WAAW;;CAGpE,OAAsC;AAGpC,OAAK,kBAAkB;AACvB,SAAO,EAAE;;CAGX,AAAQ,mBAAyB;AAM/B,MAAI,KAAK,SAAS,cAAc,YAAY,CAAC,KAAK,QAAQ,QACxD;AAGF,MAAI,OAAO,WAAW,UAAU,YAAY;AAC1C,UAAO,MAAM,0CAA0C;AACvD;;AAGF,OAAK,gBAAgB,WAAW;EAChC,MAAM,OAAO;AAEb,aAAW,QAAQ,SACjB,OACA,MACmB;GACnB,MAAM,aAAa,kBAAkB,CAAC,uBAAuB,CAAC;AAC9D,UAAO,KAAK,oBAAoB,OAAO,MAAM,WAAW;;AAG1D,SAAO,MAAM,wDAAwD;;CAGvE,MAAc,oBACZ,OACA,MACA,YACmB;EAEnB,MAAM,MAAM,OAAO,UAAU,WAAW,QAAQ,iBAAiB,MAAM,MAAM,OAAO,MAAM;EAC1F,MAAM,SAAS,MAAM,UAAU;EAC/B,MAAM,UAAU,MAAM,WAAW,EAAE;EAEnC,IAAI,oBAAoB,EAAE;EAC1B,IAAIC,cAAmB,MAAM;AAC7B,MAAI;AACF,uBAAoB,KAAK,kBAAkB,QAAQ;AACnD,iBAAc,MAAM,OAAS,MAAM,KAAK,mBAAmB,MAAM,KAAK,GAAY,MAAM;WACjF,OAAO;AACd,UAAO,MAAM,qDAAqD,MAAM;;AAO1E,MAFG,kBAA0B,sBAAsB,UAAU,wBAAwB,IAAI,CAGvF,QAAO,KAAK,cAAe,OAAO,KAAK;EAGzC,MAAMC,aAA8B;GAClC;GACA;GACA,SAAS;GACT,MAAM;GACP;AAGD,MAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;GACtB,0BAA0B;IACxB,MAAM,eAAe,IAAI,SAAS,MAAM;KACtC,QAAQ;KACR,YAAY;KACb,CAAC;AAEF,WAAO,QAAQ,QAAQ,aAAa;;GAEtC,iBAAiB;GACjB,yBAAyB;AAEvB,WAAO,UAAU,qBACf,KAAK,YACC,KAAK,cAAe,OAAO,KAAK,EACtC;KACE,MAAM;KACN,MAAMC,uBAAS;KACf,aAAa;KACb,aAAa,YAAY;KACzB,qBAAqB,KAAK;KAC1B,WAAW,WAAW;KACtB;KACA,eAAe;KAChB,GACA,aAAa;AACZ,YAAO,KAAK,mBAAmB,YAAY,UAAU,WAAW;MAEnE;;GAEJ,CAAC;WACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;GACtB,4BAA4B,KAAK,cAAe,OAAO,KAAK;GAC5D,oBAAoB,EAAE,oBACpB,KAAK,mBAAmB,OAAO,YAAY,eAAe,KAAK;GACjE,UAAUA,uBAAS;GACpB,CAAC;MAGF,QAAO,KAAK,cAAe,OAAO,KAAK;;CAI3C,AAAQ,mBACN,OACA,YACA,eACA,MACmB;AACnB,SAAO,UAAU,qBACf,KAAK,YACC,KAAK,cAAe,OAAO,KAAK,EACtC;GACE,MAAM,WAAW;GACjB,MAAMA,uBAAS;GACf,aAAa;GACb,aAAa,YAAY;GACzB,qBAAqB,KAAK;GAC1B,WAAW,WAAW;GACtB;GACA,mBAAmB;IACjB,GAAI,WAAW,QAAQ,EACrB,MAAM;KACJ,UAAU,aAAa;KACvB,aAAa,eAAe,WAAW,QAAQ,mBAAmB,GAAG;KACtE,EACF;IACD,GAAI,WAAW,WAAW,EACxB,SAAS,EACP,iBAAiB,GAClB,EACF;IACF;GACD;GACD,GACA,aAAa;AACZ,UAAO,KAAK,cAAe,OAAO,KAAK,CACpC,KAAK,OAAO,aAAa;AAExB,QAAI;KACF,MAAM,gBAAgB,SAAS,OAAO;KACtC,MAAM,cAAc,MAAM,KAAK,oBAAoB,cAAc;KAEjE,MAAM,cAAc;MAClB,QAAQ,SAAS;MACjB,YAAY,SAAS;MACrB,SAAS,KAAK,yBAAyB,SAAS,QAAQ;MACxD,MAAM;MACN,UAAU,aAAa,UAAU;MAClC;KAGD,MAAMC,WAA0B;MAC9B,SAAS,SAAS;MAClB,QAAQ,SAAS;MACjB,MAAMD,uBAAS;MACf;MACA;MACD;AACD,UAAK,gBAAgB,gBAAgB,SAAS;AAE9C,eAAU,kBAAkB,SAAS,MAAM;MACzC,YAAY,SAAS;MACrB,aAAa,SAAS;MACtB,oBAAoB;OAClB,MAAM;QACJ,UAAU,aAAa;QACvB,aAAa,eACV,SAAS,YAAoB,UAAU,mBAAmB,GAC5D;QACF;OACD,SAAS,EACP,iBAAiB,GAClB;OACF;MACD,GAAI,SAAS,qBAAqB,EAChC,mBAAmB,SAAS,mBAC7B;MACF,CAAC;KAEF,MAAM,SACJ,SAAS,UAAU,MACf;MAAE,MAAME,6BAAe;MAAO,SAAS,QAAQ,SAAS;MAAU,GAClE,EAAE,MAAMA,6BAAe,IAAI;AAEjC,eAAU,QAAQ,SAAS,MAAM,OAAO;aACjC,OAAO;AACd,YAAO,MAAM,0DAA0D,MAAM;;AAE/E,WAAO;KACP,CACD,OAAO,UAAU;AAChB,QAAI;AACF,eAAU,QAAQ,SAAS,MAAM;MAC/B,MAAMA,6BAAe;MACrB,SAAS,MAAM;MAChB,CAAC;aACKC,SAAO;AACd,YAAO,MAAM,6CAA6CA,QAAM;;AAElE,UAAM;KACN;IAEP;;CAGH,MAAc,mBACZ,YACA,UACA,YACmB;EACnB,MAAM,WAAW,MAAM,sBAAsB;GAC3C,iBAAiB;IACf,SAAS,SAAS;IAClB,QAAQ,SAAS;IACjB,MAAM,WAAW;IACjB,aAAa;IACb,aAAa,YAAY;IACzB,qBAAqB,KAAK;IAC1B,eAAe,WAAW;IAC1B;IACA,MAAMH,uBAAS;IACf;IACD;GACD,WAAW,KAAK;GAChB,wBAAwB;IACtB,GAAI,WAAW,QAAQ,EACrB,MAAM;KACJ,UAAU,aAAa;KACvB,aAAa,eAAe,WAAW,QAAQ,mBAAmB,GAAG;KACtE,EACF;IACD,GAAI,WAAW,WAAW,EACxB,SAAS,EACP,iBAAiB,GAClB,EACF;IACF;GACF,CAAC;AAEF,MAAI,CAAC,UAAU;AACb,UAAO,KACL,iFAAiF,KAAK,UAAU,WAAW,GAC5G;AACD,SAAM,IAAI,MAAM,kEAAkE;;EAGpF,MAAM,EAAE,WAAW;EACnB,MAAM,eAAe,KAAK,4BAA4B,OAAO;EAE7D,MAAM,eAAe,IAAI,SAAS,cAAc;GAC9C,QAAQ,OAAO;GACf,YAAY,OAAO;GACnB,SAAS,IAAI,QAAQ,OAAO,QAAQ;GACrC,CAAC;AAEF,SAAO,QAAQ,QAAQ,aAAa;;CAGtC,AAAQ,kBAAkB,SAAsC;AAC9D,MAAI,mBAAmB,SAAS;GAC9B,MAAMI,SAAiC,EAAE;AACzC,WAAQ,SAAS,OAAO,QAAQ;AAC9B,WAAO,IAAI,aAAa,IAAI;KAC5B;AACF,UAAO;aACE,MAAM,QAAQ,QAAQ,EAAE;GACjC,MAAMA,SAAiC,EAAE;AACzC,WAAQ,SAAS,CAAC,KAAK,WAAW;AAChC,WAAO,IAAI,aAAa,IAAI;KAC5B;AACF,UAAO;aACE,OAAO,YAAY,YAAY,YAAY,MAAM;GAC1D,MAAMA,SAAiC,EAAE;AACzC,UAAO,QAAQ,QAAQ,CAAC,SAAS,CAAC,KAAK,WAAW;AAChD,QAAI,OAAO,UAAU,SACnB,QAAO,IAAI,aAAa,IAAI;KAE9B;AACF,UAAO;;AAET,SAAO,EAAE;;CAGX,MAAc,mBAAmB,MAAwC;AACvE,MAAI;GACF,IAAIC;AAEJ,OAAI,SAAS,KACX;AAGF,OAAI,OAAO,SAAS,SAElB,cAAa,OAAO,KAAK,MAAM,OAAO;YAC7B,gBAAgB,YAEzB,cAAa,OAAO,KAAK,KAAK;YAE9B,gBAAgB,cAChB,gBAAgB,aAChB,gBAAgB,eAChB,gBAAgB,cAChB,gBAAgB,eAChB,gBAAgB,cAChB,gBAAgB,gBAChB,gBAAgB,gBAChB,gBAAgB,SAGhB,cAAa,OAAO,KAAK,KAAK,QAAQ,KAAK,YAAY,KAAK,WAAW;YAC9D,gBAAgB,gBAEzB,cAAa,OAAO,KAAK,KAAK,UAAU,EAAE,OAAO;YACxC,gBAAgB,UAAU;AAGnC,WAAO,KAAK,8DAA8D;AAC1E;cACS,gBAAgB,MAAM;IAE/B,MAAM,cAAc,MAAM,KAAK,aAAa;AAC5C,iBAAa,OAAO,KAAK,YAAY;cAC5B,QAAQ,OAAO,SAAS,YAAY,OAAO,iBAAiB,MAAM;IAE3E,MAAMC,SAAuB,EAAE;AAC/B,eAAW,MAAM,SAAS,KACxB,QAAO,KAAK,MAAM;AAEpB,iBAAa,OAAO,OAAO,OAAO,KAAK,UAAU,OAAO,KAAK,MAAM,CAAC,CAAC;cAC5D,QAAQ,OAAO,SAAS,YAAY,OAAO,YAAY,MAAM;IAEtE,MAAMA,SAAuB,EAAE;AAC/B,SAAK,MAAM,SAAS,KAClB,QAAO,KAAK,MAAM;AAEpB,iBAAa,OAAO,OAAO,OAAO,KAAK,UAAU,OAAO,KAAK,MAAM,CAAC,CAAC;UAChE;AAEL,WAAO,KAAK,qCAAqC,OAAO,MAAM,KAAK;AACnE;;AAGF,UAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC;WACrC,OAAO;AACd,UAAO,KAAK,kCAAkC,MAAM;AACpD;;;;;;CAOJ,MAAc,oBAAoB,UAAiD;AACjF,MAAI;AACF,OAAI,CAAC,SAAS,KACZ;GAEF,MAAM,cAAc,MAAM,SAAS,aAAa;AAGhD,UAAO,MAAM,gBAAgB,EAAE,YAFZ,OAAO,KAAK,YAAY,EAEA,CAAC;WACrC,OAAO;AACd;;;;;;CAOJ,AAAQ,4BAA4B,QAAsD;AACxF,MAAI,OAAO,KACT,QAAO,OAAO,KAAK,OAAO,MAAM,SAAS;AAE3C,SAAO;;CAGT,AAAQ,yBAAyB,SAA0C;EACzE,MAAMF,SAAiC,EAAE;AACzC,UAAQ,SAAS,OAAO,QAAQ;AAC9B,UAAO,IAAI,aAAa,IAAI;IAC5B;AACF,SAAO;;;;;;AC1XX,IAAY,4DAAL;AACL;AACA;AACA;;;;;;;;;AC1CF,SAASG,SAAO,QAAyB;AACvC,KAAI;EACF,MAAM,MAAM,OAAO,SAAS,OAAO;AAEnC,SAAO,OAAO,KAAK,KAAK,OAAO,CAAC,OAAO,OAAO;SACxC;AACN,SAAO;;;;;;AAOX,SAAgB,uBAAuB,OAA4B;AACjE,KAAI,OAAO,SAAS,MAAM,EAAE;AAC1B,MAAIA,SAAO,MAAM,CACf,KAAI;AAEF,UAAO;IACL,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;IACnC,YAAY;IACZ,UAAU,eAAe;IAC1B;UACK;AAEN,UAAO;IACL,OAAO,MAAM,SAAS,OAAO;IAC7B,YAAY;IACZ,UAAU,eAAe;IAC1B;;AAIL,SAAO;GACL,OAAO;GACP,YAAY,MAAM,SAAS,SAAS;GACpC,UAAU,eAAe;GAC1B;;AAGH,KAAI,OAAO,UAAU,SACnB,KAAI;AAEF,SAAO;GACL,OAAO,KAAK,MAAM,MAAM;GACxB,YAAY;GACZ,UAAU,eAAe;GAC1B;SACK;AAMV,QAAO;EACL;EACA,YAAY;EACZ,UAAU,eAAe;EAC1B;;;;;;AC7CH,MAAMC,uBAAqB,CAAC,eAAe,MAAM;AAEjD,IAAa,yBAAb,cAA4C,sBAAsB;CAKhE,YAAY,SAAuC,EAAE,EAAE;AACrD,QAAM,WAAW,OAAO;OALT,uBAAuB;AAMtC,OAAK,OAAO,OAAO,QAAQ,cAAc;AACzC,OAAK,YAAY,cAAc,aAAa;;CAG9C,OAAsC;AACpC,SAAO,CACL,IAAI,4BAA4B;GAC9B,MAAM;GACN,mBAAmBA;GACnB,QAAQ,kBAAwC,KAAK,oBAAoB,cAAc;GACvF,OAAO,CACL,IAAI,gCAAgC;IAClC,MAAM;IACN,mBAAmB,CAAC,MAAM;IAC1B,QAAQ,kBAAuB,KAAK,qBAAqB,cAAc;IACxE,CAAC,EACF,IAAI,gCAAgC;IAClC,MAAM;IACN,mBAAmB,CAAC,cAAc;IAClC,QAAQ,kBAAuB,KAAK,qBAAqB,cAAc;IACxE,CAAC,CACH;GACF,CAAC,CACH;;CAGH,AAAQ,oBAAoB,eAA2D;AACrF,SAAO,MAAM,uDAAuD,KAAK,KAAK,OAAO;AAErF,MAAI,KAAK,gBAAgB,cAAc,EAAE;AACvC,UAAO,MAAM,oEAAoE;AACjF,UAAO;;EAGT,MAAM,gBAAgB,MAAM,cAAc,GAAG,cAAc,UAAU;AAErE,MAAI,CAAC,iBAAiB,CAAC,cAAc,WAAW;AAC9C,UAAO,MAAM,gEAAgE;AAC7E,UAAO;;AAIT,MAAI,cAAc,UAAU,aAC1B;OAAI,CAACC,YAAU,cAAc,UAAU,YAAY,EAAE;AACnD,SAAK,MAAM,cAAc,WAAW,eAAe,KAAK,wBAAwB,CAAC;AACjF,WAAO,MAAM,sDAAsD;;;AAKvE,MAAI,cAAc,UAAU,SAC1B;OAAI,CAACA,YAAU,cAAc,UAAU,QAAQ,EAAE;AAC/C,SAAK,MAAM,cAAc,WAAW,WAAW,KAAK,oBAAoB,CAAC;AACzE,WAAO,MAAM,kDAAkD;;;AAKnE,MAAI,cAAc,UAAU,UAC1B;OAAI,CAACA,YAAU,cAAc,UAAU,SAAS,EAAE;AAChD,SAAK,MAAM,cAAc,WAAW,YAAY,KAAK,6BAA6B,CAAC;AACnF,WAAO,MAAM,mDAAmD;;;AAIpE,MAAI,cAAc,UAAU,OAC1B;OAAI,CAACA,YAAU,cAAc,UAAU,MAAM,EAAE;AAC7C,SAAK,MAAM,cAAc,WAAW,SAAS,KAAK,0BAA0B,CAAC;AAC7E,WAAO,MAAM,gDAAgD;;;AAIjE,OAAK,oBAAoB,cAAc;AACvC,SAAO,MAAM,4DAA4D;AAEzE,SAAO;;CAGT,AAAQ,qBAAqB,eAAyB;AACpD,SAAO,MAAM,wDAAwD,KAAK,KAAK,OAAO;AAEtF,MAAI,KAAK,gBAAgB,cAAc,EAAE;AACvC,UAAO,MAAM,qEAAqE;AAClF,UAAO;;EAGT,MAAM,gBAAgB,MAAM,cAAc,GAAG,cAAc,UAAU;AAErE,MAAI,CAAC,iBAAiB,CAAC,cAAc,WAAW;AAC9C,UAAO,MAAM,yEAAyE;AACtF,UAAO;;AAIT,MAAI,cAAc,UAAU,MAC1B;OAAI,CAACA,YAAU,cAAc,UAAU,KAAK,EAAE;AAC5C,SAAK,MAAM,cAAc,WAAW,QAAQ,KAAK,yBAAyB,CAAC;AAC3E,WAAO,MAAM,wDAAwD;;;AAIzE,OAAK,oBAAoB,cAAc;AACvC,SAAO,MAAM,6DAA6D;AAE1E,SAAO;;CAGT,AAAQ,yBAAyB;EAC/B,MAAM,OAAO;AAEb,UAAQ,wBAAkC;AACxC,UAAO,SAAS,YAAoC,KAAsB;AACxE,QAAI,CAAC,OAAO,OAAO,QAAQ,YAAY,CAAC,IAAI,KAC1C,QAAO,oBAAoB,MAAM,MAAM,UAAU;IAGnD,MAAM,cAAc,IAAI;IACxB,MAAM,cAAc,IAAI,QAAQ,EAAE;IAElC,IAAIC,gBAAuB,EAAE;IAC7B,IAAIC,eAAiC,EAAE;AACvC,QAAI;KACF,MAAM,YAAY,KAAK,cAAc,YAAY;AACjD,qBAAgB,UAAU;AAC1B,oBAAe,UAAU;aAClB,OAAO;AACd,YAAO,MAAM,mDAAmD,MAAM;;IAGxE,MAAMC,aAAgC;KACpC,SAAS;KACT,MAAM;KACN;KACA,gBAAgB;MACd,MAAM,KAAK,SAAS;MACpB,MAAM,KAAK,SAAS;MACrB;KACF;AAGD,QAAI,KAAK,SAAS,cAAc,QAAQ;KACtC,MAAM,aAAa,kBAAkB,CAAC,yBAAyB,CAAC;AAEhE,YAAO,iBAAiB;MACtB,0BAA0B;MAG1B,iBAAiB;MACjB,yBAAyB;AACvB,cAAO,UAAU,qBACf,KAAK,YACC,oBAAoB,MAAM,MAAM,UAAU,EAChD;QACE,MAAM,WAAW;QACjB,MAAMC,uBAAS;QACf,WAAW;QACX,aAAa,YAAY;QACzB,aAAa;QACb,qBAAqB,KAAK;QACd;QACZ,eAAe;QAChB,GACA,aAAa;AACZ,eAAO,KAAK,yBAAyB,UAAU,KAAK,YAAY,WAAW;SAE9E;;MAEJ,CAAC;eACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,oBAAoB,MAAM,MAAM,UAAU;KACtE,oBAAoB,EAAE,oBAAoB;AACxC,aAAO,UAAU,qBACf,KAAK,YACC,oBAAoB,MAAM,MAAM,UAAU,EAChD;OACE,MAAM,WAAW;OACjB,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ;OACD,GACA,aAAa;AACZ,cAAO,KAAK,yBAAyB,UAAU,qBAAqB,KAAK,KAAK;QAEjF;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAEF,QAAO,oBAAoB,MAAM,MAAM,UAAU;;;;CAMzD,AAAQ,qBAAqB;EAC3B,MAAM,OAAO;AACb,UAAQ,oBAA8B;AACpC,UAAO,SAAS,UAAgC;IAC9C,MAAMC,aAAuC;KAC3C,MAAM,KAAK,SAAS;KACpB,MAAM,KAAK,SAAS;KACrB;AAGD,QAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;KACtB,0BAA0B;AACxB,cAAQ,eAAe;AACrB,OAAC,KAAa,KAAK,QAAQ;QAC3B;AAEF,aAAO,QAAQ,SAAS;;KAE1B,iBAAiB;KACjB,yBAAyB;AACvB,aAAO,UAAU,qBACf,KAAK,YACC,gBAAgB,MAAM,MAAM,UAAU,EAC5C;OACE,MAAM;OACN,MAAMD,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ,eAAe;OAChB,GACA,aAAa;AACZ,cAAO,KAAK,qBAAqB,KAAK;QAEzC;;KAEJ,CAAC;aACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,gBAAgB,MAAM,MAAM,UAAU;KAClE,oBAAoB,EAAE,oBAAoB;AACxC,aAAO,UAAU,qBACf,KAAK,YACC,gBAAgB,MAAM,MAAM,UAAU,EAC5C;OACE,MAAM;OACN,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ;OACD,GACA,aAAa;AACZ,cAAO,KAAK,qBAAqB,UAAU,iBAAiB,KAAK;QAEpE;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAEF,QAAO,gBAAgB,MAAM,MAAM,UAAU;;;;CAMrD,AAAQ,8BAA8B;EACpC,MAAM,OAAO;AAEb,UAAQ,qBAA+B;AACrC,UAAO,SAAS,SAAoB,GAAG,MAAa;IAClD,MAAM,mBAAmB,iBAAiB,MAAM,MAAM,KAAK;AAG3D,QAAI,oBAAoB,iBAAiB,QAAQ,CAACJ,YAAU,iBAAiB,KAAK,EAAE;AAClF,UAAK,MAAM,kBAAkB,QAAQ,KAAK,yBAAyB,CAAC;AACpE,YAAO,MAAM,6DAA6D;;AAG5E,WAAO;;;;CAKb,AAAQ,2BAA2B;EACjC,MAAM,OAAO;AAEb,UAAQ,kBAA4B;AAClC,UAAO,SAAS,MAAiB,GAAG,MAAa;IAC/C,MAAM,gBAAgB,cAAc,MAAM,MAAM,KAAK;AAGrD,QAAI,iBAAiB,cAAc,QAAQ,CAACA,YAAU,cAAc,KAAK,EAAE;AACzE,UAAK,MAAM,eAAe,QAAQ,KAAK,yBAAyB,CAAC;AACjE,YAAO,MAAM,0DAA0D;;AAGzE,WAAO;;;;CAKb,AAAQ,0BAA0B;EAChC,MAAM,OAAO;AAEb,UAAQ,iBAA2B;AACjC,UAAO,SAAS,KAAgB,GAAG,MAAa;IAU9C,MAAM,aAAa,EACjB,WATa,KAAa,UAAU,EAAE,EAErC,QAAQ,MAAW,EAAE,SAAS,OAAO,CACrC,KAAK,OAAY;KAChB,SAAS,EAAE;KACX,MAAM,EAAE,QAAQ,EAAE;KACnB,EAAE,EAIJ;AAGD,QAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;KACtB,0BAA0B;AACxB,aAAO,EAAE;;KAEX,iBAAiB;KACjB,yBAAyB;AACvB,aAAO,UAAU,qBACf,KAAK,YACC,aAAa,MAAM,MAAM,KAAK,EACpC;OACE,MAAM;OACN,MAAMI,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ,eAAe;OAChB,GACA,aAAa;AACZ,cAAO,KAAK,0BAA0B,UAAU,YAAY,KAAK;QAEpE;;KAEJ,CAAC;aACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,aAAa,MAAM,MAAM,KAAK;KAC1D,oBAAoB,EAAE,oBAAoB;AACxC,aAAO,UAAU,qBACf,KAAK,YACC,aAAa,MAAM,MAAM,KAAK,EACpC;OACE,MAAM;OACN,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ;OACD,GACA,aAAa;AACZ,cAAO,KAAK,0BAA0B,UAAU,cAAc,MAAM,KAAK;QAE5E;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAEF,QAAO,aAAa,MAAM,MAAM,KAAK;;;;CAM7C,AAAQ,yBACN,UACA,qBACA,KACA,aACc;EAGd,MAAM,UAAU,oBAAoB,MAAM,aAAa,CAAC,IAAI,CAAC;AAE7D,MAAI,WAAW,OAAO,QAAQ,SAAS,WACrC,QAAO,QACJ,MAAM,WAAgB;AACrB,OAAI;AACF,WAAO,MACL,4CAA4C,IAAI,KAAK,2BAA2B,UAAU,cAAc,CAAC,GAC1G;IAGD,MAAM,cAAc,KAAK,iBAAiB,OAAO;AACjD,cAAU,kBAAkB,SAAS,MAAM,EAAE,aAAa,CAAC;AAC3D,cAAU,QAAQ,SAAS,MAAM,EAAE,MAAME,6BAAe,IAAI,CAAC;YACtD,OAAO;AACd,WAAO,MAAM,+DAA+D,MAAM;;AAEpF,UAAO;IACP,CACD,OAAO,UAAe;AACrB,OAAI;AACF,WAAO,MACL,4CAA4C,IAAI,KAAK,UAAU,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GAC3G;AACD,cAAU,QAAQ,SAAS,MAAM;KAC/B,MAAMA,6BAAe;KACrB,SAAS,MAAM;KAChB,CAAC;YACK,WAAW;AAClB,WAAO,MAAM,+CAA+C,UAAU;;AAExE,SAAM;IACN;AAGN,SAAO;;CAGT,MAAc,yBACZ,UACA,KACA,YACA,YACc;AACd,SAAO,MAAM,sDAAsD,IAAI,OAAO;EAE9E,MAAM,WAAW,MAAM,sBAAsB;GAC3C,iBAAiB;IACf,SAAS,SAAS;IAClB,QAAQ,SAAS;IACjB,MAAM,WAAW,IAAI;IACT;IACZ,aAAa;IACb,qBAAqB,KAAK;IAC1B,eAAe,IAAI;IACnB,MAAMF,uBAAS;IACf;IACD;GACD,WAAW,KAAK;GACjB,CAAC;AAEF,MAAI,CAAC,UAAU;AACb,UAAO,KAAK,4DAA4D,IAAI,OAAO;AACnF,SAAM,IAAI,MAAM,gEAAgE,IAAI,OAAO;;AAG7F,SAAO,MACL,wDAAwD,IAAI,KAAK,IAAI,KAAK,UAAU,SAAS,GAC9F;EAED,MAAM,SAAS,KAAK,mBAAmB,SAAS,OAAO;AAGvD,MAAI,IAAI,YAAY,OAAO,IAAI,aAAa,WAC1C,SAAQ,eAAe;AACrB,OAAI,SAAU,MAAM,OAAO;IAC3B;AAKJ,SAAO,QAAQ,QAAQ,OAAO;;CAGhC,AAAQ,qBACN,UACA,iBACA,aACc;EACd,MAAM,UAAU,gBAAgB,MAAM,aAAa,EAAE,CAAC;AAEtD,MAAI,WAAW,OAAO,QAAQ,SAAS,WACrC,QAAO,QACJ,MAAM,WAAgB;AACrB,OAAI;AACF,WAAO,MACL,oEAAoE,UAAU,cAAc,CAAC,GAC9F;AACD,cAAU,kBAAkB,SAAS,MAAM,EACzC,aAAa,EAAE,WAAW,MAAM,EACjC,CAAC;AACF,cAAU,QAAQ,SAAS,MAAM,EAAE,MAAME,6BAAe,IAAI,CAAC;WACvD;AACN,WAAO,MAAM,wDAAwD;;AAEvE,UAAO;IACP,CACD,OAAO,UAAe;AACrB,OAAI;AACF,WAAO,MACL,mDAAmD,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GAC/F;AACD,cAAU,QAAQ,SAAS,MAAM;KAC/B,MAAMA,6BAAe;KACrB,SAAS,MAAM;KAChB,CAAC;WACI;AACN,WAAO,MAAM,wDAAwD;;AAEvE,SAAM;IACN;AAGN,MAAI;AAEF,UAAO,MACL,qEAAqE,UAAU,cAAc,CAAC,GAC/F;AACD,aAAU,kBAAkB,SAAS,MAAM,EACzC,aAAa,EAAE,WAAW,MAAM,EACjC,CAAC;AACF,aAAU,QAAQ,SAAS,MAAM,EAAE,MAAMA,6BAAe,IAAI,CAAC;UACvD;AACN,UAAO,MAAM,wDAAwD;;AAEvE,SAAO;;CAGT,MAAc,qBAAqB,aAA6C;AAC9E,SAAO,MAAM,qDAAqD;AAElE,UAAQ,eAAe;AACrB,GAAC,YAAoB,KAAK,QAAQ;IAClC;AAEF,SAAO,QAAQ,SAAS;;CAG1B,AAAQ,0BACN,UACA,cACA,aACA,MACc;EACd,MAAM,UAAU,aAAa,MAAM,aAAa,KAAK;AAErD,MAAI,WAAW,OAAO,QAAQ,SAAS,WACrC,QAAO,QACJ,MAAM,YAAiB;AACtB,OAAI;AACF,WAAO,MACL,kEAAkE,UAAU,cAAc,CAAC,GAC5F;IAGD,MAAM,cAAc,KAAK,yBAAyB,QAAQ;AAC1D,cAAU,kBAAkB,SAAS,MAAM,EAAE,aAAa,CAAC;AAC3D,cAAU,QAAQ,SAAS,MAAM,EAAE,MAAMA,6BAAe,IAAI,CAAC;WACvD;AACN,WAAO,MAAM,wDAAwD;;AAEvE,UAAO;IACP,CACD,OAAO,UAAe;AACrB,OAAI;AACF,WAAO,MACL,iDAAiD,MAAM,QAAQ,IAAI,UAAU,cAAc,CAAC,GAC7F;AACD,cAAU,QAAQ,SAAS,MAAM;KAC/B,MAAMA,6BAAe;KACrB,SAAS,MAAM;KAChB,CAAC;WACI;AACN,WAAO,MAAM,wDAAwD;;AAEvE,SAAM;IACN;AAGN,SAAO;;CAGT,MAAc,0BACZ,UACA,YACA,MACc;AACd,SAAO,MAAM,mDAAmD;EAEhE,MAAM,WAAW,MAAM,sBAAsB;GAC3C,iBAAiB;IACf,SAAS,SAAS;IAClB,QAAQ,SAAS;IACjB,MAAM;IACM;IACZ,aAAa;IACb,qBAAqB,KAAK;IAC1B,eAAe;IACf,MAAMF,uBAAS;IAChB;GACD,WAAW,KAAK;GACjB,CAAC;AAEF,MAAI,CAAC,UAAU;AACb,UAAO,KAAK,gEAAgE;AAC5E,SAAM,IAAI,MAAM,oEAAoE;;AAGtF,SAAO,MACL,+DAA+D,KAAK,UAAU,SAAS,GACxF;EAGD,MAAM,SAAS,KAAK,2BAA2B,SAAS,OAAO;EAG/D,MAAM,WAAW,KAAK,KAAK,SAAS;AACpC,MAAI,OAAO,aAAa,WACtB,SAAQ,eAAe;AACrB,YAAS,MAAM,OAAO;IACtB;AAGJ,SAAO,QAAQ,QAAQ,OAAO;;CAGhC,AAAQ,cAAc,MAA4D;EAChF,MAAMG,SAAgB,EAAE;EACxB,MAAMC,WAA6B,EAAE;AAErC,OAAK,SAAS,QAAQ;GACpB,MAAM,YAAY,uBAAuB,IAAI;AAC7C,UAAO,KAAK,UAAU,MAAM;AAC5B,YAAS,KAAK;IACZ,YAAY,UAAU;IACtB,UAAU,UAAU;IACrB,CAAC;IACF;AAEF,SAAO;GAAE;GAAQ;GAAU;;CAG7B,AAAQ,iBAAiB,OAAgC;AAIvD,SAAO,EAAE,OAAO;;CAGlB,AAAQ,yBAAyB,SAAmB;AAElD,SAAO,EAAE,OAAO,SAAS;;CAG3B,AAAQ,2BAA2B,aAAuB;AACxD,MAAI,CAAC,YACH,QAAO,EAAE;AAIX,SAAO,YAAY,SAAS;;CAG9B,AAAQ,mBAAmB,aAAuB;AAChD,MAAI,CAAC,YACH;AAKF,MAAI,OAAO,gBAAgB,YAAY,EAAE,WAAW,aAClD,QAAO;AAIT,SAAO,YAAY;;CAGrB,AAAQ,MAAM,QAAa,cAAsB,SAAuC;AACtF,OAAK,QAAQ,cAAc,QAAQ;;;;;;;ACtrBvC,MAAM,qBAAqB,CAAC,UAAU;AAGtC,MAAM,iBAAiB;CAErB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAGA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAGA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAGA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAGA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAGA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAGA;CACA;CACA;CACA;CACA;CAGA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAGA;CACA;CACA;CAGA;CACA;CACA;CACA;CACA;CACA;CAGA;CACA;CACA;CAGA;CACA;CACA;CACA;CACA;CAGA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAGA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,IAAa,8BAAb,cAAiD,sBAAsB;CAKrE,YAAY,SAA4C,EAAE,EAAE;AAC1D,QAAM,kBAAkB,OAAO;OALhB,uBAAuB;AAMtC,OAAK,OAAO,OAAO,QAAQ,cAAc;AACzC,OAAK,YAAY,cAAc,aAAa;;CAG9C,OAAsC;AACpC,SAAO,CACL,IAAI,4BAA4B;GAC9B,MAAM;GACN,mBAAmB;GACnB,QAAQ,kBAA6C;AACnD,WAAO,KAAK,yBAAyB,cAAc;;GAEtD,CAAC,CACH;;CAGH,AAAQ,yBACN,eAC2B;AAC3B,SAAO,MACL,mEAAmE,KAAK,KAAK,OAC9E;AAED,MAAI,KAAK,SAAS,cAAc,UAAU;AACxC,UAAO,MAAM,sDAAsD,KAAK,KAAK,OAAO;AACpF,UAAO;;AAGT,MAAI,KAAK,gBAAgB,cAAc,EAAE;AACvC,UAAO,MAAM,iEAAiE;AAC9E,UAAO;;EAIT,MAAM,cAAc,MAAM,cAAc;AACxC,SAAO,MACL,uDAAuD,cAAc,QAAQ,QAC9E;EAGD,MAAM,gBAAgB,cAAc;AAEpC,MAAI,CAAC,iBAAiB,OAAO,kBAAkB,YAAY;AACzD,UAAO,MACL,0FAA0F,OAAO,KAAK,cAAc,CAAC,KAAK,KAAK,GAChI;AACD,UAAO;;EAGT,MAAM,OAAO;EAKb,MAAM,eAAe,SAAS,MAAiB,GAAG,MAAa;AAC7D,UAAO,MAAM,yDAAyD;GAGtE,MAAM,WAAW,QAAQ,UAAU,eAAe,MAAM,IAAI,UAAU,aAAa;AAInF,UAAO,KAAK,uBAAuB,SAAS;;AAI9C,SAAO,eAAe,cAAc,cAAc;AAClD,eAAa,YAAY,cAAc;AAmBvC,MAAI,aAAa;AAEf,OAAI;AAEF,IAAC,cAAsB,QAAQ;YACxB,OAAO;AAGd,WAAO,eAAe,eAAe,SAAS;KAC5C,OAAO;KACP,UAAU;KACV,YAAY;KACZ,cAAc;KACf,CAAC;;AAGJ,QAAK,oBAAoB,cAAc;AACvC,UAAO,MAAM,wEAAwE;AACrF,UAAO;SACF;GAIL,MAAMC,mBAA8C;IAClD,GAAG;IACH,OAAO;IACR;AAED,QAAK,oBAAoB,iBAAiB;AAC1C,UAAO,MAAM,wEAAwE;AACrF,UAAO;;;CAIX,AAAQ,uBAAuB,UAAoB;EACjD,MAAM,OAAO;EACb,MAAM,mBAAmB,IAAI,IAAI,eAAe;AAEhD,SAAO,MAAM,0EAA0E;AAEvF,SAAO,IAAI,MAAM,UAAU,EACzB,IAAI,QAAa,MAAuB,UAAe;GACrD,MAAM,gBAAgB,QAAQ,IAAI,QAAQ,MAAM,SAAS;AAMzD,OACE,OAAO,SAAS,YAChB,iBAAiB,IAAI,KAAK,aAAa,CAAC,IACxC,OAAO,kBAAkB,YACzB;AACA,WAAO,MAAM,4DAA4D,OAAO;AAGhF,WAAO,SAAqB,GAAG,MAAa;KAC1C,MAAM,cAAc;KACpB,MAAM,gBAAgB,iBAAiB,YAAY,aAAa;KAChE,MAAM,gBAAgB;KAGtB,MAAMC,aAAqC;MACzC,SAAS,CACP,YAAY,aAAa,EACzB,GAAG,KAAK,QAAQ,QAAQ,OAAO,QAAQ,WAAW,CACnD;MACD,gBAAgB,EACd,SAAS,OAAO,QAAQ,SACzB;MACF;AAGD,SAAI,KAAK,SAAS,cAAc,QAAQ;MACtC,MAAM,aAAa,kBAAkB,CAAC,8BAA8B,CAAC;AAErE,aAAO,iBAAiB;OACtB,0BAA0B;OAG1B,iBAAiB;OACjB,yBAAyB;AACvB,eAAO,UAAU,qBACf,KAAK,YACC,cAAc,MAAM,SAAS,WAAW,SAAS,MAAM,KAAK,EAClE;SACE,MAAM;SACN,MAAMC,uBAAS;SACf,WAAW;SACX,aAAa,YAAY;SACzB,aAAa;SACb,qBAAqB,KAAK;SACd;SACZ,eAAe;SAChB,GACA,aAAa;AACZ,gBAAO,KAAK,qBACV,UACA,YACA,eACA,eACA,WACD;UAEJ;;OAEJ,CAAC;gBACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;MACtB,4BACE,cAAc,MAAM,SAAS,WAAW,SAAS,MAAM,KAAK;MAC9D,oBAAoB,EAAE,oBAAoB;AACxC,cAAO,UAAU,qBACf,KAAK,YACC,cAAc,MAAM,SAAS,WAAW,SAAS,MAAM,KAAK,EAClE;QACE,MAAM;QACN,MAAMA,uBAAS;QACf,WAAW;QACX,aAAa,YAAY;QACzB,aAAa;QACb,qBAAqB,KAAK;QACd;QACZ;QACA,yBAAyB;QAC1B,GACA,aAAa;AACZ,eAAO,KAAK,qBACV,UACA,eACA,SAAS,WAAW,SAAS,MAC7B,KACD;SAEJ;;MAEH,UAAUA,uBAAS;MACpB,CAAC;SAEF,QAAO,cAAc,MAAM,SAAS,WAAW,SAAS,MAAM,KAAK;;;AAMzE,UAAO;KAEV,CAAC;;CAGJ,MAAc,qBACZ,UACA,gBACA,aACA,MACc;AACd,MAAI;GACF,MAAM,SAAS,MAAM,eAAe,MAAM,aAAa,KAAK;AAE5D,UAAO,MAAM,+DAA+D;GAE5E,MAAMC,cAAuC,EACnC,QACT;AAED,OAAI;AACF,cAAU,kBAAkB,SAAS,MAAM,EAAE,aAAa,CAAC;AAC3D,cAAU,QAAQ,SAAS,MAAM,EAC/B,MAAMC,6BAAe,IACtB,CAAC;YACK,OAAO;AACd,WAAO,MAAM,+DAA+D,QAAQ;;AAGtF,UAAO;WACA,OAAO;AACd,UAAO,MAAM,gDAAgD,QAAQ;AACrE,OAAI;AACF,cAAU,QAAQ,SAAS,MAAM,EAC/B,MAAMA,6BAAe,OACtB,CAAC;YACKC,SAAO;AACd,WAAO,MAAM,oDAAoDA,UAAQ;;AAE3E,SAAM;;;CAIV,MAAc,qBACZ,UACA,YACA,eACA,eACA,YACc;AACd,SAAO,MAAM,oDAAoD,gBAAgB;EAEjF,MAAM,WAAW,MAAM,sBAAsB;GAC3C,iBAAiB;IACf,SAAS,SAAS;IAClB,QAAQ,SAAS;IACjB,MAAM;IACM;IACZ,aAAa;IACb,qBAAqB,KAAK;IACX;IACf,MAAMH,uBAAS;IACf;IACD;GACD,WAAW,KAAK;GACjB,CAAC;AAEF,MAAI,CAAC,UAAU;AACb,UAAO,KAAK,iEAAiE,gBAAgB;AAC7F,SAAM,IAAI,MACR,qEAAqE,gBACtE;;AAGH,SAAO,MACL,6DAA6D,cAAc,IAAI,KAAK,UAAU,SAAS,GACxG;AAGD,SAAO,SAAS,QAAQ;;;;;;;;;AC/gB5B,SAAS,OAAO,QAAyB;AACvC,KAAI;EACF,MAAM,MAAM,OAAO,SAAS,OAAO;AACnC,SAAO,OAAO,KAAK,KAAK,OAAO,CAAC,OAAO,OAAO;SACxC;AACN,SAAO;;;;;;AAOX,SAAgB,sBAAsB,UAAiC;AACrE,KAAI,CAAC,SACH,QAAO,EAAE;CAGX,MAAMI,mBAAqC,EAAE;CAG7C,MAAM,cAAc,SAAS,SAAS,SAAS,QAAQ,GAAG,EAAE;CAC5D,MAAM,OAAO,OAAO,KAAK,YAAY;AAErC,MAAK,MAAM,OAAO,MAAM;EACtB,MAAM,WAAW,SAAS,IAAI,IAAI;AAClC,mBAAiB,OAAO,EAAE;AAE1B,OAAK,MAAM,SAAS,UAAU;AAC5B,OAAI,OAAO,UAAU,UAAU;AAC7B,qBAAiB,KAAK,KAAK,MAAM;AACjC;;AAIF,OAAI,OAAO,SAAS,MAAM,EAAE;IAC1B,IAAIC;AACJ,QAAI,OAAO,MAAM,CACf,kBAAiB;KACf,OAAO,MAAM,SAAS,OAAO;KAC7B,UAAU;KACX;QAED,kBAAiB;KACf,OAAO,MAAM,SAAS,SAAS;KAC/B,UAAU;KACX;AAEH,qBAAiB,KAAK,KAAK,eAAe;;;;AAKhD,QAAO;;;;;AAMT,SAAgB,wBACd,qBACA,kBACK;CACL,MAAM,WAAW,IAAI,qBAAqB;AAE1C,MAAK,MAAM,CAAC,KAAK,aAAa,OAAO,QAAQ,iBAAiB,CAC5D,MAAK,MAAM,SAAS,UAAU;AAC5B,MAAI,OAAO,UAAU,UAAU;AAC7B,YAAS,IAAI,KAAK,MAAM;AACxB;;AAIF,MAAI,OAAO,UAAU,YAAY,WAAW,SAAS,cAAc,OAAO;GACxE,MAAM,eAAe;AACrB,OAAI,aAAa,aAAa,OAC5B,UAAS,IAAI,KAAK,OAAO,KAAK,aAAa,OAAO,QAAQ,CAAC;OAE3D,UAAS,IAAI,KAAK,OAAO,KAAK,aAAa,OAAO,SAAS,CAAC;;;AAMpE,QAAO;;;;;;AAOT,SAAgB,cAAc,QAG5B;AACA,KAAI,CAACC,UAAQA,WAAS,KACpB,QAAO;EAAE,QAAQ;EAAI,SAAS;EAAI;CAGpC,MAAM,QAAQA,OAAK,QAAQ,OAAO,GAAG,CAAC,MAAM,IAAI;CAChD,MAAM,UAAU,MAAM,MAAM;AAG5B,QAAO;EAAE,QAFM,MAAM,MAAM;EAEV;EAAS;;;;;AAM5B,SAAgB,qBAAqB,UAInC;CACA,MAAMC,YAAiE,EAAE;CACzE,MAAMC,oBAA4C,EAAE;CAGpD,MAAM,eAAe,UAAU,SAAS;AAGxC,gCAA+B,cAAc,WAAW,mBAAmB,EAAE,CAAC;AAE9E,QAAO;EAAE;EAAc;EAAW;EAAmB;;;;;AAMvD,SAAS,+BACP,SACA,WACA,mBACA,QACM;AACN,KAAI,CAAC,WAAW,OAAO,YAAY,SACjC;AAGF,MAAK,MAAM,OAAO,OAAO,KAAK,QAAQ,EAAE;EACtC,MAAM,cAAc,CAAC,GAAGF,QAAM,IAAI;EAClC,MAAM,iBAAiB,YAAY,KAAK,IAAI;AAG5C,MAAI,OAAO,SAAS,QAAQ,KAAK,EAAE;AACjC,OAAI,OAAO,QAAQ,KAAK,EAAE;AAExB,cAAU,kBAAkB;KAC1B,OAFkB,QAAQ,KAAK,SAAS,QAAQ;KAGhD,UAAU;KACX;AACD,YAAQ,OAAO;UACV;AACL,cAAU,kBAAkB;KAC1B,OAAO,QAAQ,KAAK,SAAS,SAAS;KACtC,UAAU;KACX;AACD,YAAQ,OAAO;;AAEjB;;AAIF,MAAI,OAAO,QAAQ,SAAS,YAAY,QAAQ,SAAS,KACvD,gCAA+B,QAAQ,MAAM,WAAW,mBAAmB,YAAY;;;;;;AAQ7F,SAAgB,uBACd,iBACA,WACA,mBACK;CACL,MAAM,gBAAgB,UAAU,gBAAgB;AAChD,iCAAgC,eAAe,WAAW,mBAAmB,EAAE,CAAC;AAChF,QAAO;;;;;AAMT,SAAS,gCACP,SACA,WACA,mBACA,QACM;AACN,KAAI,CAAC,WAAW,OAAO,YAAY,SACjC;AAGF,MAAK,MAAM,OAAO,OAAO,KAAK,QAAQ,EAAE;EACtC,MAAM,cAAc,CAAC,GAAGA,QAAM,IAAI;EAClC,MAAM,iBAAiB,YAAY,KAAK,IAAI;AAG5C,MAAI,QAAQ,SAAS,kCAAkC;GACrD,MAAM,SAAS,UAAU;AACzB,OAAI,OACF,KAAI,OAAO,aAAa,OACtB,SAAQ,OAAO,OAAO,KAAK,OAAO,OAAO,QAAQ;OAEjD,SAAQ,OAAO,OAAO,KAAK,OAAO,OAAO,SAAS;AAGtD;;AAIF,MAAI,OAAO,QAAQ,SAAS,YAAY,QAAQ,SAAS,KACvD,iCAAgC,QAAQ,MAAM,WAAW,mBAAmB,YAAY;;;;;;AAQ9F,SAAS,UAAU,KAAe;AAChC,KAAI,QAAQ,QAAQ,OAAO,QAAQ,SACjC,QAAO;AAGT,KAAI,OAAO,SAAS,IAAI,CACtB,QAAO,OAAO,KAAK,IAAI;AAGzB,KAAI,MAAM,QAAQ,IAAI,CACpB,QAAO,IAAI,KAAK,SAAS,UAAU,KAAK,CAAC;CAG3C,MAAMG,SAAc,EAAE;AACtB,MAAK,MAAM,OAAO,IAChB,KAAI,IAAI,eAAe,IAAI,CACzB,QAAO,OAAO,UAAU,IAAI,KAAK;AAIrC,QAAO;;;;;;ACvNT,MAAM,mBAAmB;AAEzB,IAAa,sBAAb,MAAa,4BAA4B,sBAAsB;CAQ7D,YAAY,SAAoC,EAAE,EAAE;AAClD,QAAM,QAAQ,OAAO;OARN,uBAAuB;AAStC,OAAK,OAAO,OAAO,QAAQ,cAAc;AACzC,OAAK,YAAY,cAAc,aAAa;AAC5C,SAAO,MAAM,uDAAuD,KAAK,OAAO;;CAGlF,OAAsC;AAiDpC,SAAO,CAVqB,IAAI,4BAA4B;GAC1D,MAAM;GACN,mBAAmB,CAAC,MAAM;GAC1B,QAAQ,eAAkC,cAAqB;AAC7D,WAAO,MAAM,oDAAoDC,YAAU;AAC3E,WAAO,KAAK,iBAAiB,eAAeA,aAAW,GAAG;;GAE5D,OAAO,CA5C6B,IAAI,gCAAgC;IACxE,MAAM,GAAG,iBAAiB;IAC1B,mBAAmB,CAAC,MAAM;IAC1B,QAAQ,eAAoB,cAAqB;AAC/C,YAAO,MAAM,oDAAoDA,YAAU;AAE3E,SAAI,cAAc,UAAU,cAAc,OAAO,WAAW;AAC1D,WAAK,iBAAiB,cAAc,OAAO,WAAWA,aAAW,GAAG;AACpE,aAAO,MAAM,8DAA8D;WAE3E,QAAO,KAAK,sEAAsE;AAGpF,YAAO;;IAEV,CAAC,CA6BsC;GACvC,CAAC,CAE0B;;CAG9B,AAAQ,iBAAiB,eAAkC,WAAoC;AAC7F,SAAO,MAAM,sDAAsD,KAAK,KAAK,OAAO;AAEpF,MAAI,KAAK,gBAAgB,cAAc,EAAE;AACvC,UAAO,MAAM,8DAA8D;AAC3E,UAAO;;AAIT,MAAI,cAAc,UAAU;AAC1B,uBAAoB,cAAc,IAAIA,WAAS,cAAc,SAAS;AACtE,QAAK,WAAW,cAAc;AAC9B,UAAO,MAAM,iEAAiEA,YAAU;;AAO1F,OAAK,oBAAoB,cAAc;AACvC,SAAO,MAAM,2DAA2D;AAExE,SAAO;;CAGT,AAAQ,iBAAiB,iBAAsB,WAAuB;AACpE,MAAI,CAAC,iBAAiB;AACpB,UAAO,KAAK,mDAAmD;AAC/D;;AAIF,OAAK,MAAM,iBAAiB,oBAAoB,KAAK,4BAA4BA,UAAQ,CAAC;AAG1F,OAAK,MACH,iBACA,2BACA,KAAK,mCAAmCA,UAAQ,CACjD;AAGD,OAAK,MAAM,iBAAiB,gBAAgB,KAAK,yBAAyB,CAAC;AAG3E,OAAK,MAAM,iBAAiB,SAAS,KAAK,kBAAkB,CAAC;AAG7D,OAAK,MAAM,iBAAiB,cAAc,KAAK,uBAAuB,CAAC;AAEvE,SAAO,MAAM,4DAA4D;;;;;;;;;CAwB3E,AAAQ,wBACN,qBACA,MACA,MACA,MACqD;AAErD,MAAI,gBAAgB,uBAAuB,OAAO,SAAS,WACzD,QAAO;GACL,UAAU;GACV,SAAS,EAAE;GACX,UAAU;GACX;AAIH,MACE,gBAAgB,uBAChB,gBAAgB,UAChB,OAAO,SAAS,WAEhB,QAAO;GACL,UAAU;GACV,SAAS;GACT,UAAU;GACX;AAIH,QAAM,IAAI,MACR,kIAAkI,OAAO,KAAK,IAAI,OAAO,KAAK,IAAI,OAAO,KAAK,GAC/K;;;;;CAMH,AAAQ,yBACN,MACA,qBASA;EACA,MAAM,SAAS,KAAK;EACpB,MAAM,YAAY,KAAK;EACvB,MAAM,cAAc,KAAK;EACzB,MAAM,WAAW,KAAK;EAEtB,MAAM,EAAE,UAAU,SAAS,aAAa,KAAK,wBAC3C,qBACA,KAAK,IACL,KAAK,IACL,KAAK,GACN;AAED,SAAO;GAAE;GAAQ;GAAW;GAAa;GAAU;GAAU;GAAS;GAAU;;CAGlF,AAAQ,4BAA4B,WAAiB;EACnD,MAAM,OAAO;AACb,SAAO,MACL,yEAAyEA,YAC1E;AACD,UAAQ,aAAuB;AAC7B,UAAO,SAAS,iBAA4B,GAAG,MAAa;AAC1D,WAAO,MAAM,+DAA+D,KAAK,SAAS;IAC1F,MAAM,sBAAsB,oBAAoB,cAAc,IAAIA,UAAQ,IAAI,KAAK;AAEnF,QAAI,CAAC,qBAAqB;AACxB,YAAO,KACL,oEAAoEA,YACrE;AACD,YAAO,SAAS,MAAM,MAAM,KAAK;;IAInC,IAAIC;AAUJ,QAAI;AACF,oBAAe,KAAK,yBAAyB,MAAM,oBAAoB;aAChE,OAAO;AACd,YAAO,MAAM,mEAAmE,MAAM;AAEtF,YAAO,SAAS,MAAM,MAAM,KAAK;;IAGnC,MAAM,EAAE,QAAQC,QAAM,UAAU,UAAU,SAAS,aAAa;IAEhE,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IAOJ,IAAIC;IACJ,IAAIC;AAEJ,QAAI;AACF,MAAC,CAAE,QAAQ,WAAY,cAAcN,OAAK;AAC1C,MAAC,CAAE,cAAc,WAAW,qBAAsB,qBAAqB,SAAS;AAChF,wBAAmB,sBAAsB,SAAS;aAC3C,OAAO;AACd,YAAO,MAAM,mEAAmE,MAAM;AAEtF,YAAO,SAAS,MAAM,MAAM,KAAK;;IAQnC,MAAMO,aAAmC;KACvC;KACA;KACA,MAAM;KACN,UAAU;KACV,WAVgC;MAChC;MACA;MACD;KAQA;AAGD,QAAI,KAAK,SAAS,cAAc,QAAQ;KACtC,MAAM,aAAa,kBAAkB,CAAC,sBAAsB,CAAC;AAE7D,YAAO,iBAAiB;MACtB,0BAA0B;AACxB,gBAAS,MAAM,OAAU;;MAG3B,iBAAiB;MACjB,yBAAyB;AACvB,cAAO,UAAU,qBACf,KAAK,YACC,SAAS,MAAM,MAAM,KAAK,EAChC;QACE,MAAM;QACN,MAAMC,uBAAS;QACf,WAAW;QACX,aAAa,YAAY;QACzB,aAAa;QACb,qBAAqB,KAAK;QACd;QACZ,eAAe;QAChB,GACA,aAAa;AACZ,eAAO,KAAK,0BACV,UACA,YACA,UACA,qBACA,WACD;SAEJ;;MAEJ,CAAC;eACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,SAAS,MAAM,MAAM,KAAK;KACtD,oBAAoB,EAAE,oBAAoB;AACxC,aAAO,UAAU,qBACf,KAAK,YACC,SAAS,MAAM,MAAM,KAAK,EAChC;OACE,MAAM;OACN,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ;OACD,GACA,aAAa;AACZ,cAAO,KAAK,0BACV,UACA,UACA,MACA,cACA,SACD;QAEJ;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAEF,QAAO,SAAS,MAAM,MAAM,KAAK;;;;CAMzC,AAAQ,mCAAmC,WAAiB;EAC1D,MAAM,OAAO;AACb,SAAO,MACL,gFAAgFV,YACjF;AACD,UAAQ,aAAuB;AAC7B,UAAO,SAAS,wBAAmC,GAAG,MAAa;AACjE,WAAO,MACL,sEAAsE,KAAK,SAC5E;IACD,MAAM,sBAAsB,oBAAoB,cAAc,IAAIA,UAAQ,IAAI,KAAK;AAEnF,QAAI,CAAC,qBAAqB;AACxB,YAAO,KACL,oEAAoEA,YACrE;AACD,YAAO,SAAS,MAAM,MAAM,KAAK;;IAKnC,IAAIW;AASJ,QAAI;AACF,oBAAe,KAAK,qCAAqC,MAAM,oBAAoB;aAC5E,OAAO;AACd,YAAO,MACL,0EACA,MACD;AAED,YAAO,SAAS,MAAM,MAAM,KAAK;;IAGnC,MAAM,EAAE,QAAQT,QAAM,UAAU,UAAU,YAAY;IAEtD,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IAOJ,IAAIC;IACJ,IAAIC;AAEJ,QAAI;AACF,MAAC,CAAE,QAAQ,WAAY,cAAcN,OAAK;AAC1C,MAAC,CAAE,cAAc,WAAW,qBAAsB,qBAAqB,SAAS;AAChF,wBAAmB,sBAAsB,SAAS;aAC3C,OAAO;AACd,YAAO,MACL,0EACA,MACD;AAED,YAAO,SAAS,MAAM,MAAM,KAAK;;IAQnC,MAAMO,aAAmC;KACvC;KACA;KACA,MAAM;KACN,UAAU;KACV,WAVgC;MAChC;MACA;MACD;KAQA;AAGD,QAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;KACtB,0BAA0B;MAExB,MAAMG,WAAS,IAAIC,gBAAS;OAC1B,YAAY;OACZ,OAAO;OAGR,CAAC;AAGF,aAAO,OAAOD,UAAQ;OACpB,SAAS;OACT,eAAe;OACf,MAAM;OACP,CAAC;AAEF,aAAOA;;KAET,iBAAiB;KACjB,yBAAyB;AACvB,aAAO,UAAU,qBACf,KAAK,YACC,SAAS,MAAM,MAAM,KAAK,EAChC;OACE,MAAM;OACN,MAAMF,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ,eAAe;OAChB,GACA,aAAa;AACZ,cAAO,KAAK,iCACV,UACA,YACA,oBACD;QAEJ;;KAEJ,CAAC;aACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,SAAS,MAAM,MAAM,KAAK;KACtD,oBAAoB,EAAE,oBAAoB;AACxC,aAAO,UAAU,qBACf,KAAK,YACC,SAAS,MAAM,MAAM,KAAK,EAChC;OACE,MAAM;OACN,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ;OACD,GACA,aAAa;AACZ,cAAO,KAAK,iCACV,UACA,UACA,MACA,aACD;QAEJ;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAEF,QAAO,SAAS,MAAM,MAAM,KAAK;;;;CAMzC,AAAQ,qCACN,MACA,qBAQA;EAGA,MAAM,SAAS,KAAK;EACpB,MAAM,YAAY,KAAK;EACvB,MAAM,cAAc,KAAK;EACzB,MAAM,WAAW,KAAK;EAItB,IAAII;EACJ,IAAIC;AAEJ,MAAI,KAAK,WAAW,GAAG;AAErB,cAAW,KAAK;AAChB,aAAU,KAAK;aACN,KAAK,WAAW,EAGzB,KAAI,KAAK,cAAc,qBAAqB;AAC1C,cAAW,KAAK;AAChB,aAAU,EAAE;SACP;AACL,cAAW,IAAI,qBAAqB;AACpC,aAAU,KAAK,MAAM,EAAE;;OAEpB;AACL,cAAW,IAAI,qBAAqB;AACpC,aAAU,EAAE;;AAGd,SAAO;GAAE;GAAQ;GAAW;GAAa;GAAU;GAAU;GAAS;;CAGxE,AAAQ,0BACN,UACA,UACA,WACA,cASA,UACK;EACL,IAAI,qBAAqB;EACzB,IAAI,kBAAkB;EACtB,IAAI,mBAAmB;EACvB,IAAI,kBAAkB;EACtB,IAAIC;EACJ,IAAIC,oBAAyE,EAAE;EAC/E,IAAIC,4BAAiD,EAAE;EACvD,IAAIC;EAKJ,IAAIC,0BAA+B,EAAE;EACrC,IAAIC;;;;;;EAOJ,MAAM,gBAAgB,QAAa,YAA4B,iBAA0B;AACvF,OAAI,gBACF;AAEF,qBAAkB;AAElB,OAAI;AACF,cAAU,kBAAkB,SAAS,MAAM,EACzC,aAAa,QACd,CAAC;AACF,cAAU,QAAQ,SAAS,MAAM;KAC/B,MAAM;KACN,SAAS;KACV,CAAC;YACK,GAAG;AACV,WAAO,MAAM,gDAAgD,EAAE;;;EAKnE,MAAM,mBAAmB,KAAU,UAAe;AAChD,OAAI;AACF,QAAI,KAAK;AACP,oBAAe;AACf,wBAAmB;WACd;KACL,MAAM,EAAE,cAAc,WAAW,sBAAsB,qBAAqB,MAAM;AAClF,4BAAuB;AACvB,yBAAoB;AACpB,iCAA4B;AAC5B,0BAAqB;;AAGvB,QAAI,mBAAmB,mBAQrB,cAPoC;KAClC,MAAM;KACN,UAAU;KACV;KACA,WAAW;KACX,mBAAmB;KACpB,EACwBC,6BAAe,GAAG;aAClC,mBAAmB,iBAU5B,cATqC;KACnC,OAAO;MACL,SAAS,aAAa;MACtB,MAAM,aAAa;MACnB,OAAO,aAAa;MACrB;KACD;KACA,UAAU;KACX,EACyBA,6BAAe,OAAO,aAAa,QAAQ;YAEhE,GAAG;AACV,WAAO,MAAM,mDAAmD,EAAE;;AAGpE,UAAO,SAAS,KAAK,MAAM;;EAK7B,MAAM,YAAY;GAChB,aAAa;GACb,aAAa;GACb,aAAa;GACb,aAAa;GACb,aAAa;GACb,aAAa;GACb;GACD;EAED,MAAM,SAAS,SAAS,MAAMC,WAAS,UAAU;AAGjD,SAAO,GAAG,aAAa,oBAAyB;AAC9C,6BAA0B,sBAAsB,gBAAgB;IAChE;AAEF,SAAO,GAAG,WAAW,mBAAwB;AAC3C,YAAS;IACP,MAAM,eAAe;IACrB,SAAS,eAAe;IACxB,UAAU,sBAAsB,eAAe,SAAS;IACzD;AACD,qBAAkB;AAElB,OAAI,mBAQF,cAPoC;IAClC,MAAM;IACN,UAAU;IACV;IACA,WAAW;IACX,mBAAmB;IACpB,EACwBD,6BAAe,GAAG;YAClC,iBAUT,cATqC;IACnC,OAAO;KACL,SAAS,aAAa;KACtB,MAAM,aAAa;KACnB,OAAO,aAAa;KACrB;IACD;IACA,UAAU;IACX,EACyBA,6BAAe,OAAO,aAAa,QAAQ;IAEvE;AAEF,SAAO;;CAIT,AAAQ,kBAAkB,QAAsE;AAC9F,SAAO,WAAW;;CAGpB,AAAQ,0BACN,UACA,YACA,UACA,qBACA,YACK;AACL,SAAO,MAAM,qDAAqD;EAGlE,MAAM,UAAU,OAAO,OAAO,IAAIE,qBAAc,EAAE;GAChD,SAAS;GACT,eAAe;GACf,MAAM;GACP,CAAC;AAGF,wBAAsB;GACpB,iBAAiB;IACf,SAAS,SAAS;IAClB,QAAQ,SAAS;IACjB,MAAM;IACM;IACZ,aAAa;IACb,aAAa,YAAY;IACzB,qBAAqB,KAAK;IAC1B,eAAe;IACf,MAAMd,uBAAS;IACf;IACD;GACD,WAAW,KAAK;GACjB,CAAC,CACC,MAAM,aAAa;AAClB,OAAI,CAAC,UAAU;AACb,WAAO,KACL,8DAA8D,WAAW,QAAQ,GAAG,WAAW,UAC/F,WACD;AACD,UAAM,IAAI,MAAM,sEAAsE;;GAGxF,MAAMe,aAAgD,SAAS;GAC/D,IAAIC;AAGJ,OAAI,KAAK,kBAAkB,WAAW,EAAE;IACtC,MAAM,EAAE,OAAO,QAAQ,gBAAgB;AACvC,aAAS;KACP,MAAM,YAAY;KAClB,SAAS,YAAY;KACrB,UAAU,wBAAwB,qBAAqB,YAAY,SAAS;KAC7E;AAQD,aANiB,OAAO,OAAO,IAAI,MAAM,MAAM,QAAQ,EAAE;KACvD,MAAM,MAAM;KACZ,OAAO,MAAM;KACb,GAAG;KACJ,CAAC,CAEgB;UACb;IAEL,MAAM,EAAE,MAAM,QAAQ,eAAe,WAAW,sBAAsB;IACtE,MAAM,iBAAiB,aAAa,EAAE;IACtC,MAAM,yBAAyB,qBAAqB,EAAE;AAEtD,aAAS;KACP,MAAM,cAAc;KACpB,SAAS,cAAc;KACvB,UAAU,wBAAwB,qBAAqB,cAAc,SAAS;KAC/E;AAGD,aAAS,MADY,uBAAuB,MAAM,gBAAgB,uBAAuB,CAC7D;;AAI9B,WAAQ,eAAe;AACrB,QAAI,WAAW,SACb,SAAQ,KACN,YACA,wBAAwB,qBAAqB,WAAW,SAAS,CAClE;AAEH,YAAQ,KAAK,UAAU,OAAO;KAC9B;IACF,CACD,OAAO,UAAU;AAChB,UAAO,MAAM,mDAAmD,MAAM;AACtE,YAAS,MAAM;IACf;AAGJ,SAAO;;CAGT,AAAQ,iCACN,UACA,UACA,WACA,cAQK;EAEL,IAAI,mBAAmB;EACvB,IAAI,kBAAkB;EACtB,IAAIC,kBAAyB,EAAE;EAC/B,IAAIR;EAKJ,IAAIC,0BAA+B,EAAE;EACrC,IAAIC;;;;EAKJ,MAAM,gBAAgB,QAAa,YAA4B,iBAA0B;AACvF,OAAI,gBACF;AAEF,qBAAkB;AAElB,OAAI;AACF,cAAU,kBAAkB,SAAS,MAAM,EACzC,aAAa,QACd,CAAC;AACF,cAAU,QAAQ,SAAS,MAAM,EAC/B,MAAM,YACP,CAAC;YACK,GAAG;AACV,WAAO,MAAM,gDAAgD,EAAE;;;EAKnE,MAAM,YAAY;GAChB,aAAa;GACb,aAAa;GACb,aAAa;GACb,aAAa;GACb,aAAa;GACb,aAAa;GACd;EAED,MAAMT,WAAS,SAAS,MAAMW,WAAS,UAAU;AAGjD,WAAO,GAAG,SAAS,SAAc;AAC/B,OAAI;IACF,MAAM,EAAE,cAAc,WAAW,sBAAsB,qBAAqB,KAAK;AACjF,oBAAgB,KAAK;KACnB,MAAM;KACN;KACA;KACD,CAAC;YACK,GAAG;AACV,WAAO,MAAM,wDAAwD,EAAE;;IAEzE;AAGF,WAAO,GAAG,aAAa,oBAAyB;AAC9C,6BAA0B,sBAAsB,gBAAgB;IAChE;AAGF,WAAO,GAAG,UAAU,QAAa;AAC/B,kBAAe;AACf,sBAAmB;IACnB;AAGF,WAAO,GAAG,WAAW,mBAAwB;AAC3C,YAAS;IACP,MAAM,eAAe;IACrB,SAAS,eAAe;IACxB,UAAU,sBAAsB,eAAe,SAAS;IACzD;AAID,OAAI,CAAC,oBAAoB,gBAAgB,SAAS,EAQhD,cAPgC;IAC9B,MAAM;IACN,UAAU;IACV;IACA,WAAW,EAAE;IACb,mBAAmB,EAAE;IACtB,EACoBD,6BAAe,GAAG;YAC9B,CAAC,oBAAoB,gBAAgB,WAAW,EASzD,cAPgC;IAC9B,MAAM,EAAE;IACR,UAAU;IACV;IACA,WAAW,EAAE;IACb,mBAAmB,EAAE;IACtB,EACoBA,6BAAe,GAAG;YAC9B,iBAUT,cATqC;IACnC,OAAO;KACL,SAAS,aAAa;KACtB,MAAM,aAAa;KACnB,OAAO,aAAa;KACrB;IACD;IACA,UAAU;IACX,EACyBA,6BAAe,OAAO,aAAa,QAAQ;IAEvE;AAEF,SAAOV;;CAGT,AAAQ,iCACN,UACA,YACA,qBACK;AACL,SAAO,MAAM,6DAA6D;EAG1E,MAAMA,WAAS,IAAIC,gBAAS;GAC1B,YAAY;GACZ,OAAO;GAGR,CAAC;AAGF,SAAO,OAAOD,UAAQ;GACpB,SAAS;GACT,eAAe;GACf,MAAM;GACP,CAAC;AAGF,wBAAsB;GACpB,iBAAiB;IACf,SAAS,SAAS;IAClB,QAAQ,SAAS;IACjB,MAAM;IACM;IACZ,aAAa;IACb,aAAa,YAAY;IACzB,qBAAqB,KAAK;IAC1B,eAAe;IACf,MAAMF,uBAAS;IAChB;GACD,WAAW,KAAK;GACjB,CAAC,CACC,MAAM,aAAa;AAClB,OAAI,CAAC,UAAU;AACb,WAAO,KACL,4EAA4E,WAAW,QAAQ,GAAG,WAAW,UAC7G,WACD;AAED,UAAM,IAAI,MACR,8EACD;;GAGH,MAAMe,aAAgD,SAAS;AAG/D,WAAQ,eAAe;AACrB,QAAI,KAAK,kBAAkB,WAAW,EAAE;KAEtC,MAAM,EAAE,OAAO,QAAQ,gBAAgB;KACvC,MAAM,SAAS;MACb,MAAM,YAAY;MAClB,SAAS,YAAY;MACrB,UAAU,wBAAwB,qBAAqB,YAAY,SAAS;MAC7E;AAED,SAAI,WAAW,SACb,UAAO,KACL,YACA,wBAAwB,qBAAqB,WAAW,SAAS,CAClE;KAGH,MAAM,WAAW,OAAO,OAAO,IAAI,MAAM,MAAM,QAAQ,EAAE;MACvD,MAAM,MAAM;MACZ,OAAO,MAAM;MACb,GAAG;MACJ,CAAC;AAEF,cAAO,KAAK,SAAS,SAAS;AAC9B,cAAO,KAAK,UAAU,OAAO;AAC7B,cAAO,KAAK,KAAK;WACZ;KAEL,MAAM,EAAE,MAAM,QAAQ,kBAAkB;KACxC,MAAM,SAAS;MACb,MAAM,cAAc;MACpB,SAAS,cAAc;MACvB,UAAU,wBAAwB,qBAAqB,cAAc,SAAS;MAC/E;AAED,SAAI,WAAW,SACb,UAAO,KACL,YACA,wBAAwB,qBAAqB,WAAW,SAAS,CAClE;AAIH,SAAI,MAAM,QAAQ,KAAK,CACrB,MAAK,SAAS,SAAc;MAC1B,MAAM,iBAAiB,KAAK,aAAa,EAAE;MAC3C,MAAM,yBAAyB,KAAK,qBAAqB,EAAE;MAC3D,MAAM,eAAe,uBACnB,KAAK,MACL,gBACA,uBACD;AACD,eAAO,KAAK,aAAa;OACzB;AAGJ,cAAO,KAAK,KAAK;AACjB,cAAO,KAAK,UAAU,OAAO;;KAE/B;IACF,CACD,OAAO,UAAU;AAChB,UAAO,MAAM,qEAAqE,MAAM;AACxF,WAAQ,eAAe;AACrB,aAAO,KAAK,SAAS,MAAM;AAC3B,aAAO,KAAK,UAAU;KACpB,MAAM;KACN,SAAS,MAAM;KACf,UAAU,IAAI,qBAAqB;KACpC,CAAC;AACF,aAAO,KAAK,KAAK;KACjB;IACF;AAGJ,SAAOb;;CAiQT,AAAQ,0BAA0B;EAChC,MAAM,OAAO;AAEb,UAAQ,aAAuB;AAC7B,UAAO,SAAS,aAAwB,UAAe,UAAoB;AACzE,QAAI,KAAK,SAAS,cAAc,QAAQ;AAEtC,aAAQ,eAAe,UAAU,CAAC;AAClC;UAEA,QAAO,SAAS,MAAM,MAAM,CAAC,UAAU,SAAS,CAAC;;;;CAMzD,AAAQ,mBAAmB;EACzB,MAAM,OAAO;AAEb,UAAQ,aAAuB;AAC7B,UAAO,SAAS,QAAiB;AAC/B,QAAI,KAAK,SAAS,cAAc,OAE9B;QAEA,QAAO,SAAS,MAAM,MAAM,UAAU;;;;CAM9C,AAAQ,wBAAwB;EAC9B,MAAM,OAAO;AAEb,UAAQ,aAAuB;AAC7B,UAAO,SAAS,aAAsB;AACpC,QAAI,KAAK,SAAS,cAAc,OAE9B,QAAO,EAAE;QAET,QAAO,SAAS,MAAM,MAAM,UAAU;;;;CAM9C,AAAQ,MAAM,QAAa,cAAsB,SAAuC;AACtF,OAAK,QAAQ,cAAc,QAAQ;;;oBAr1CtB,gCAAgB,IAAI,KAAkB;;;;;;;;ACjCvD,IAAa,0BAAb,MAAqC;CAGnC,YAAY,cAAuC;AACjD,OAAK,eAAe;;;;;CAMtB,IAAI,KAAa;AACf,SAAO,KAAK,aAAa;;;;;CAM3B,IAAI,SAAkB;AACpB,SAAO,KAAK,aAAa;;;;;CAM3B,IAAI,MAAW;AAEb,SAAO;GACL,IAAI,KAAK,aAAa;GACtB,MAAM,KAAK,aAAa;GACzB;;;;;CAMH,IAAI,aAAkB;AACpB,SAAO,KAAK,aAAa,aACrB;GACE,SAAS,KAAK,aAAa,WAAW;GACtC,aAAa,KAAK,aAAa,WAAW;GAC1C,8BACE,IAAI,KACF,KAAK,aAAa,WAAY,UAAU,MACtC,KAAK,aAAa,WAAY,cAAc,IAC/C;GACJ,GACD;;;;;CAMN,IAAI,aAAkB;AACpB,SAAO,KAAK,aAAa,aACrB;GACE,SAAS,KAAK,aAAa,WAAW;GACtC,aAAa,KAAK,aAAa,WAAW;GAC1C,8BACE,IAAI,KACF,KAAK,aAAa,WAAY,UAAU,MACtC,KAAK,aAAa,WAAY,cAAc,IAC/C;GACJ,GACD;;;;;CAMN,IAAI,WAAgB;AAClB,SAAO,KAAK,aAAa,WACrB;GACE,SAAS,KAAK,aAAa,SAAS;GACpC,aAAa,KAAK,aAAa,SAAS;GACxC,8BACE,IAAI,KACF,KAAK,aAAa,SAAU,UAAU,MACpC,KAAK,aAAa,SAAU,cAAc,IAC7C;GACJ,GACD;;;;;CAMN,OAA0C;AACxC,SAAO,KAAK,aAAa;;;;;CAM3B,IAAI,WAAwB;AAC1B,MAAI,CAAC,KAAK,aAAa,KACrB;AAIF,SAAO,KAAK,aAAa,KAAK;;;;;CAMhC,QAAQ,OAAyC;AAC/C,SAAO,KAAK,aAAa,SAAS,MAAM,aAAa;;;;;;;;;;ACzGzD,IAAa,uBAAb,MAAkC;CAIhC,YAAY,aAAmC;AAC7C,OAAK,cAAc;AACnB,OAAK,QAAQ,YAAY,KAAK,KAAK,QAAQ,IAAI,wBAAwB,IAAI,CAAC;;;;;CAM9E,IAAI,OAAkC;AACpC,SAAO,KAAK;;;;;CAMd,IAAI,OAAe;AACjB,SAAO,KAAK,YAAY;;;;;CAM1B,IAAI,QAAiB;AACnB,SAAO,KAAK,YAAY;;;;;CAM1B,IAAI,WAAgB;AAClB,SAAO,KAAK,YAAY,WACpB;GACE,SAAS,KAAK,YAAY,SAAS;GACnC,aAAa,KAAK,YAAY,SAAS;GACvC,8BACE,IAAI,KACF,KAAK,YAAY,SAAU,UAAU,MACnC,KAAK,YAAY,SAAU,cAAc,IAC5C;GACJ,GACD;;;;;CAMN,IAAI,QAAa;AAEf,SAAO,EAEN;;;;;CAMH,QAAQ,UAAqD,SAAqB;AAChF,OAAK,MAAM,QAAQ,UAAU,QAAQ;;;;;CAMvC,aAAoB;AAElB,SAAO,EAAE;;;;;CAMX,QAAQ,OAAsC;AAC5C,MAAI,KAAK,SAAS,MAAM,KACtB,QAAO;AAGT,SAAO,KAAK,SAAS,MAAM,QAAQ,KAAK,UAAU,MAAM;;;;;;;;;;ACjF5D,IAAa,6BAAb,MAAwC;CAGtC,YAAY,QAA8B;AACxC,OAAK,SAAS;;;;;CAMhB,IAAI,YAAiB;AACnB,SAAO,KAAK,OAAO,YACf;GACE,SAAS,KAAK,OAAO,UAAU;GAC/B,aAAa,KAAK,OAAO,UAAU;GACnC,8BACE,IAAI,KACF,KAAK,OAAO,UAAW,UAAU,MAC/B,KAAK,OAAO,UAAW,cAAc,IACxC;GACJ,GACD;;;;;CAMN,QAAQ,OAA4C;AAClD,MAAI,CAAC,KAAK,aAAa,CAAC,MAAM,UAC5B,QAAO,KAAK,cAAc,MAAM;AAElC,SACE,KAAK,UAAU,YAAY,MAAM,UAAU,WAC3C,KAAK,UAAU,gBAAgB,MAAM,UAAU;;;;;;;ACjBrD,MAAM,oBAAoB;AAC1B,MAAM,eAAe;AAErB,IAAa,2BAAb,cAA8C,sBAAsB;CAMlE,YAAY,SAAyC,EAAE,EAAE;AACvD,QAAM,cAAc,OAAO;OANZ,uBAAuB;OAGhC,0BAA2C;AAIjD,OAAK,OAAO,OAAO,QAAQ,cAAc;AACzC,OAAK,YAAY,cAAc,aAAa;;CAG9C,OAAsC;AACpC,SAAO,CACL,IAAI,4BAA4B;GAC9B,MAAM;GACN,mBAAmB,CAAC,kBAAkB;GACtC,OAAO;IAEL,IAAI,gCAAgC;KAClC,MAAM;KACN,mBAAmB,CAAC,kBAAkB;KACtC,QAAQ,kBAAuB,KAAK,wBAAwB,cAAc;KAC3E,CAAC;IAEF,IAAI,gCAAgC;KAClC,MAAM;KACN,mBAAmB,CAAC,kBAAkB;KACtC,QAAQ,kBAAuB,KAAK,0BAA0B,cAAc;KAC7E,CAAC;IAEF,IAAI,gCAAgC;KAClC,MAAM;KACN,mBAAmB,CAAC,kBAAkB;KACtC,QAAQ,kBAAuB,KAAK,YAAY,cAAc;KAC/D,CAAC;IACH;GACF,CAAC,CACH;;CAGH,AAAQ,wBAAwB,eAAyB;AACvD,SAAO,MAAM,4DAA4D,KAAK,KAAK,OAAO;AAE1F,MAAI,KAAK,gBAAgB,cAAc,EAAE;AACvC,UAAO,MAAM,yEAAyE;AACtF,UAAO;;EAGT,MAAM,oBAAoB,cAAc;AACxC,MAAI,CAAC,qBAAqB,CAAC,kBAAkB,WAAW;AACtD,UAAO,KAAK,mEAAmE;AAC/E,UAAO;;AAIT,OAAK,MAAM,kBAAkB,WAAW,OAAO,KAAK,wBAAwB,CAAC;AAC7E,OAAK,MAAM,kBAAkB,WAAW,UAAU,KAAK,2BAA2B,CAAC;AACnF,OAAK,MAAM,kBAAkB,WAAW,OAAO,KAAK,wBAAwB,CAAC;AAC7E,OAAK,MAAM,kBAAkB,WAAW,UAAU,KAAK,2BAA2B,CAAC;AACnF,OAAK,MAAM,kBAAkB,WAAW,UAAU,KAAK,2BAA2B,CAAC;AAEnF,OAAK,oBAAoB,cAAc;AACvC,SAAO,MAAM,iEAAiE;AAE9E,SAAO;;CAGT,AAAQ,0BAA0B,eAAyB;AACzD,SAAO,MAAM,8DAA8D,KAAK,KAAK,OAAO;AAE5F,MAAI,KAAK,gBAAgB,cAAc,EAAE;AACvC,UAAO,MAAM,2EAA2E;AACxF,UAAO;;EAGT,MAAM,sBAAsB,cAAc;AAC1C,MAAI,CAAC,uBAAuB,CAAC,oBAAoB,WAAW;AAC1D,UAAO,KAAK,qEAAqE;AACjF,UAAO;;AAIT,OAAK,0BAA0B,oBAAoB,UAAU;AAG7D,OAAK,MAAM,oBAAoB,WAAW,OAAO,KAAK,0BAA0B,CAAC;AACjF,OAAK,MAAM,oBAAoB,WAAW,OAAO,KAAK,0BAA0B,CAAC;AAEjF,OAAK,oBAAoB,cAAc;AACvC,SAAO,MAAM,mEAAmE;AAEhF,SAAO;;CAGT,AAAQ,YAAY,eAAyB;AAC3C,SAAO,MAAM,gDAAgD,KAAK,KAAK,OAAO;AAE9E,MAAI,KAAK,gBAAgB,cAAc,EAAE;AACvC,UAAO,MAAM,6DAA6D;AAC1E,UAAO;;EAGT,MAAM,QAAQ,cAAc;AAC5B,MAAI,CAAC,SAAS,CAAC,MAAM,WAAW;AAC9B,UAAO,KAAK,uDAAuD;AACnE,UAAO;;AAIT,OAAK,MAAM,MAAM,WAAW,OAAO,KAAK,qBAAqB,CAAC;AAE9D,OAAK,oBAAoB,cAAc;AACvC,SAAO,MAAM,qDAAqD;AAElE,SAAO;;CAGT,AAAQ,yBAAyB;EAC/B,MAAM,OAAO;AAEb,UAAQ,gBAA0B;AAChC,UAAO,WAAqB;IAG1B,MAAMgB,aAAkC;KACtC,WAAW;KACX,MAJmB,KAAK;KAKzB;AAGD,QAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;KACtB,0BAA0B;AAMxB,aAAO,IAAI,wBAL0C;OACnD,QAAQ;OACR,IAAI;OACJ,MAAM;OACP,CACsD;;KAEzD,iBAAiB;KACjB,yBAAyB;AACvB,aAAO,UAAU,qBACf,KAAK,YACC,YAAY,KAAK,KAAK,EAC5B;OACE,MAAM;OACN,MAAMC,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ,eAAe;OACf,yBAAyB;OAC1B,GACA,aAAa;AACZ,cAAO,KAAK,yBAAyB,UAAU,WAAW;QAE7D;;KAEJ,CAAC;aACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,YAAY,KAAK,KAAK;KAClD,oBAAoB,EAAE,oBAAoB;AACxC,aAAO,UAAU,qBACf,KAAK,YACC,YAAY,KAAK,KAAK,EAC5B;OACE,MAAM;OACN,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ;OACA,yBAAyB;OAC1B,GACA,aAAa;AACZ,cAAO,KAAK,yBAAyB,UAAU,aAAa,KAAK;QAEpE;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAEF,QAAO,YAAY,KAAK,KAAK;;;;CAMrC,MAAc,yBACZ,UACA,aACA,WACc;EACd,MAAM,WAAW,MAAM,YAAY,KAAKC,UAAQ;EAGhD,MAAMC,iBAA0C;GAC9C,IAAI,SAAS;GACb,MAAM,SAAS,IAAI;GACnB,QAAQ,SAAS;GACjB,MAAM,SAAS,SAAS,SAAS,MAAM,GAAG;GAC1C,YAAY,SAAS,aACjB;IAAE,SAAS,SAAS,WAAW;IAAS,aAAa,SAAS,WAAW;IAAa,GACtF;GACJ,YAAY,SAAS,aACjB;IAAE,SAAS,SAAS,WAAW;IAAS,aAAa,SAAS,WAAW;IAAa,GACtF;GACJ,UAAU,SAAS,WACf;IAAE,SAAS,SAAS,SAAS;IAAS,aAAa,SAAS,SAAS;IAAa,GAClF;GACL;AAED,MAAI;AACF,aAAU,kBAAkB,SAAS,MAAM,EACzC,aAAa,gBACd,CAAC;AACF,aAAU,QAAQ,SAAS,MAAM,EAAE,MAAMC,6BAAe,IAAI,CAAC;UACvD;AACN,UAAO,MAAM,6EAA6E;;AAG5F,SAAO;;CAGT,MAAc,yBACZ,UACA,YACc;AACd,SAAO,MAAM,oDAAoD;EAEjE,MAAM,WAAW,MAAM,sBAAsB;GAC3C,iBAAiB;IACf,SAAS,SAAS;IAClB,QAAQ,SAAS;IACjB,MAAM;IACN,YAAY,qBAAqB,WAAW;IAC5C,aAAa;IACb,qBAAqB,KAAK;IAC1B,eAAe;IACf,MAAMH,uBAAS;IAChB;GACD,WAAW,KAAK;GACjB,CAAC;AAEF,MAAI,CAAC,UAAU;AACb,UAAO,KACL,mEAAmE,WAAW,OAC/E;AACD,SAAM,IAAI,MAAM,qEAAqE;;EAGvF,MAAM,iBAAiB,SAAS;AAChC,SAAO,IAAI,wBAAwB,eAAe;;CAGpD,AAAQ,4BAA4B;EAClC,MAAM,OAAO;AAEb,UAAQ,mBAA6B;AACnC,UAAO,SAAqB,MAAW;IAGrC,MAAMD,aAAkC;KACtC,WAAW;KACX,MAJmB,KAAK;KAKlB;KACP;AAGD,QAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;KACtB,0BAA0B;MACxB,MAAM,MAAM,KAAK,KAAK;AAOtB,aAAO,IAAI,2BANoC,EAC7C,WAAW;OACT,SAAS,KAAK,MAAM,MAAM,IAAK;OAC/B,aAAc,MAAM,MAAQ;OAC7B,EACF,CACsD;;KAEzD,iBAAiB;KACjB,yBAAyB;AACvB,aAAO,UAAU,qBACf,KAAK,YACC,eAAe,KAAK,MAAM,KAAK,EACrC;OACE,MAAM;OACN,MAAMC,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ,eAAe;OACf,yBAAyB;OAC1B,GACA,aAAa;AACZ,cAAO,KAAK,2BAA2B,UAAU,WAAW;QAE/D;;KAEJ,CAAC;aACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,eAAe,KAAK,MAAM,KAAK;KAC3D,oBAAoB,EAAE,oBAAoB;AACxC,aAAO,UAAU,qBACf,KAAK,YACC,eAAe,KAAK,MAAM,KAAK,EACrC;OACE,MAAM;OACN,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ;OACA,yBAAyB;OAC1B,GACA,aAAa;AACZ,cAAO,KAAK,2BAA2B,UAAU,gBAAgB,MAAM,KAAK;QAE/E;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAEF,QAAO,eAAe,KAAK,MAAM,KAAK;;;;CAM9C,AAAQ,yBAAyB;EAC/B,MAAM,OAAO;AAEb,UAAQ,gBAA0B;AAChC,UAAO,SAAqB,MAAW,SAAe;IAGpD,MAAMD,aAAkC;KACtC,WAAW;KACX,MAJmB,KAAK;KAKlB;KACG;KACV;AAGD,QAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;KACtB,0BAA0B;MACxB,MAAM,MAAM,KAAK,KAAK;AAOtB,aAAO,IAAI,2BANoC,EAC7C,WAAW;OACT,SAAS,KAAK,MAAM,MAAM,IAAK;OAC/B,aAAc,MAAM,MAAQ;OAC7B,EACF,CACsD;;KAEzD,iBAAiB;KACjB,yBAAyB;AACvB,aAAO,UAAU,qBACf,KAAK,YACC,YAAY,KAAK,MAAM,MAAM,QAAQ,EAC3C;OACE,MAAM;OACN,MAAMC,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ,eAAe;OACf,yBAAyB;OAC1B,GACA,aAAa;AACZ,cAAO,KAAK,2BAA2B,UAAU,WAAW;QAE/D;;KAEJ,CAAC;aACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,YAAY,KAAK,MAAM,MAAM,QAAQ;KACjE,oBAAoB,EAAE,oBAAoB;AACxC,aAAO,UAAU,qBACf,KAAK,YACC,YAAY,KAAK,MAAM,MAAM,QAAQ,EAC3C;OACE,MAAM;OACN,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ;OACA,yBAAyB;OAC1B,GACA,aAAa;AACZ,cAAO,KAAK,2BACV,UACA,aACA,MACA,MACA,QACD;QAEJ;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAEF,QAAO,YAAY,KAAK,MAAM,MAAM,QAAQ;;;;CAMpD,AAAQ,4BAA4B;EAClC,MAAM,OAAO;AAEb,UAAQ,mBAA6B;AACnC,UAAO,SAAqB,GAAG,MAAa;IAI1C,MAAMD,aAAkC;KACtC,WAAW;KACX,MALmB,KAAK;KAMxB,MAAM,KAAK,WAAW,IAAI,KAAK,KAAK;KACrC;AAGD,QAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;KACtB,0BAA0B;MACxB,MAAM,MAAM,KAAK,KAAK;AAOtB,aAAO,IAAI,2BANoC,EAC7C,WAAW;OACT,SAAS,KAAK,MAAM,MAAM,IAAK;OAC/B,aAAc,MAAM,MAAQ;OAC7B,EACF,CACsD;;KAEzD,iBAAiB;KACjB,yBAAyB;AACvB,aAAO,UAAU,qBACf,KAAK,YACC,eAAe,MAAM,MAAM,KAAK,EACtC;OACE,MAAM;OACN,MAAMC,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ,eAAe;OACf,yBAAyB;OAC1B,GACA,aAAa;AACZ,cAAO,KAAK,2BAA2B,UAAU,WAAW;QAE/D;;KAEJ,CAAC;aACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,eAAe,MAAM,MAAM,KAAK;KAC5D,oBAAoB,EAAE,oBAAoB;AACxC,aAAO,UAAU,qBACf,KAAK,YACC,eAAe,MAAM,MAAM,KAAK,EACtC;OACE,MAAM;OACN,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ;OACA,yBAAyB;OAC1B,GACA,aAAa;AACZ,cAAO,KAAK,2BAA2B,UAAU,gBAAgB,MAAM,GAAG,KAAK;QAElF;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAEF,QAAO,eAAe,MAAM,MAAM,KAAK;;;;CAM/C,AAAQ,4BAA4B;EAClC,MAAM,OAAO;AAEb,UAAQ,mBAA6B;AACnC,UAAO,SAAqB,cAAoB;IAG9C,MAAMD,aAAkC;KACtC,WAAW;KACX,MAJmB,KAAK;KAKxB,SAAS;KACV;AAGD,QAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;KACtB,0BAA0B;MACxB,MAAM,MAAM,KAAK,KAAK;AAOtB,aAAO,IAAI,2BANoC,EAC7C,WAAW;OACT,SAAS,KAAK,MAAM,MAAM,IAAK;OAC/B,aAAc,MAAM,MAAQ;OAC7B,EACF,CACsD;;KAEzD,iBAAiB;KACjB,yBAAyB;AACvB,aAAO,UAAU,qBACf,KAAK,YACC,eAAe,KAAK,MAAM,aAAa,EAC7C;OACE,MAAM;OACN,MAAMC,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ,eAAe;OACf,yBAAyB;OAC1B,GACA,aAAa;AACZ,cAAO,KAAK,2BAA2B,UAAU,WAAW;QAE/D;;KAEJ,CAAC;aACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,eAAe,KAAK,MAAM,aAAa;KACnE,oBAAoB,EAAE,oBAAoB;AACxC,aAAO,UAAU,qBACf,KAAK,YACC,eAAe,KAAK,MAAM,aAAa,EAC7C;OACE,MAAM;OACN,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ;OACA,yBAAyB;OAC1B,GACA,aAAa;AACZ,cAAO,KAAK,2BACV,UACA,gBACA,MACA,aACD;QAEJ;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAEF,QAAO,eAAe,KAAK,MAAM,aAAa;;;;CAMtD,MAAc,2BACZ,UACA,eACA,WACA,GAAG,MACW;EACd,MAAM,cAAc,MAAM,cAAc,MAAMC,WAAS,KAAK;EAG5D,MAAMG,SAA+B,EACnC,WAAW,YAAY,YACnB;GACE,SAAS,YAAY,UAAU;GAC/B,aAAa,YAAY,UAAU;GACpC,GACD,QACL;AAED,MAAI;AACF,aAAU,kBAAkB,SAAS,MAAM,EACzC,aAAa,QACd,CAAC;AACF,aAAU,QAAQ,SAAS,MAAM,EAAE,MAAMD,6BAAe,IAAI,CAAC;UACvD;AACN,UAAO,MAAM,+EAA+E;;AAG9F,SAAO;;CAGT,MAAc,2BACZ,UACA,YACc;AACd,SAAO,MAAM,wDAAwD,WAAW,YAAY;EAE5F,MAAM,WAAW,MAAM,sBAAsB;GAC3C,iBAAiB;IACf,SAAS,SAAS;IAClB,QAAQ,SAAS;IACjB,MAAM,aAAa,WAAW;IAC9B,YAAY,qBAAqB,WAAW;IAC5C,aAAa;IACb,qBAAqB,KAAK;IAC1B,eAAe;IACf,MAAMH,uBAAS;IAChB;GACD,WAAW,KAAK;GACjB,CAAC;AAEF,MAAI,CAAC,UAAU;AACb,UAAO,KACL,qDAAqD,WAAW,UAAU,IAAI,WAAW,OAC1F;AACD,SAAM,IAAI,MACR,yDAAyD,WAAW,YACrE;;EAIH,MAAM,cAAc,SAAS;AAC7B,SAAO,IAAI,2BAA2B,YAAY;;CAGpD,AAAQ,2BAA2B;EACjC,MAAM,OAAO;AAEb,UAAQ,gBAA0B;AAChC,UAAO,SAAqB,MAAW;IAGrC,MAAMD,aAAkC;KACtC,WAAW;KACX,MAJqB,KAAK;KAKpB;KACP;AAGD,QAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;KACtB,0BAA0B;AACxB,UAAI,CAAC,KAAK,yBAAyB;AACjC,cAAO,MAAM,iEAAiE;AAC9E,cAAO,QAAQ,uBAAO,IAAI,MAAM,sCAAsC,CAAC;;AAEzE,aAAO,KAAK,wBAAwB,KAAK,MAAM,GAAG;;KAEpD,iBAAiB;KACjB,yBAAyB;AACvB,aAAO,UAAU,qBACf,KAAK,YACC,YAAY,KAAK,MAAM,KAAK,EAClC;OACE,MAAM;OACN,MAAMC,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ,eAAe;OACf,yBAAyB;OAC1B,GACA,aAAa;AACZ,cAAO,KAAK,2BAA2B,UAAU,YAAY,KAAK;QAErE;;KAEJ,CAAC;aACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,YAAY,KAAK,MAAM,KAAK;KACxD,oBAAoB,EAAE,oBAAoB;AACxC,aAAO,UAAU,qBACf,KAAK,YACC,YAAY,KAAK,MAAM,KAAK,EAClC;OACE,MAAM;OACN,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ;OACA,yBAAyB;OAC1B,GACA,aAAa;AACZ,cAAO,KAAK,2BAA2B,UAAU,aAAa,MAAM,KAAK;QAE5E;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAEF,QAAO,YAAY,KAAK,MAAM,KAAK;;;;CAM3C,MAAc,2BACZ,UACA,aACA,WACA,MACc;EACd,MAAM,SAAS,MAAM,YAAY,KAAKC,WAAS,KAAK;EAGpD,MAAM,SAAS;GACb,IAAI,OAAO;GACX,MAAM,OAAO;GACd;AAED,MAAI;AACF,aAAU,kBAAkB,SAAS,MAAM,EACzC,aAAa,QACd,CAAC;AACF,aAAU,QAAQ,SAAS,MAAM,EAAE,MAAME,6BAAe,IAAI,CAAC;UACvD;AACN,UAAO,MAAM,+EAA+E;;AAG9F,SAAO;;CAET,MAAc,2BACZ,UACA,YACA,eACc;AACd,SAAO,MAAM,sDAAsD;EACnE,MAAM,WAAW,MAAM,sBAAsB;GAC3C,iBAAiB;IACf,SAAS,SAAS;IAClB,QAAQ,SAAS;IACjB,MAAM;IACN,YAAY,qBAAqB,WAAW;IAC5C,aAAa;IACb,qBAAqB,KAAK;IAC1B,eAAe;IACf,MAAMH,uBAAS;IAChB;GACD,WAAW,KAAK;GACjB,CAAC;AAEF,MAAI,CAAC,UAAU;AACb,UAAO,KACL,qEAAqE,WAAW,OACjF;AAED,SAAM,IAAI,MAAM,uEAAuE;;EAKzF,MAAM,aAAa,SAAS,OAAO;AACnC,MAAI,CAAC,KAAK,yBAAyB;AACjC,UAAO,MAAM,iEAAiE;AAC9E,UAAO,QAAQ,uBAAO,IAAI,MAAM,sCAAsC,CAAC;;AAEzE,SAAO,KAAK,wBAAwB,KAAK,eAAe,WAAW;;CAGrE,AAAQ,2BAA2B;EACjC,MAAM,OAAO;AAEb,UAAQ,gBAA0B;AAChC,UAAO,SAAqB,cAAuB;IACjD,MAAM,iBAAiB,KAAK;IAE5B,MAAMD,aAAkC;KACtC,WAAW;KACX,MAAM;KACN,YAAY;KACb;AAED,QAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;KACtB,0BAA0B;AACxB,aAAO,YAAY,KAAK,MAAM,GAAG;;KAEnC,iBAAiB;KACjB,yBAAyB;AACvB,aAAO,UAAU,qBACf,KAAK,YAEH,eAAe,YAAY,KAAK,MAAM,aAAa,GAAG,YAAY,KAAK,KAAK,EAC9E;OACE,MAAM;OACN,MAAMC,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ,eAAe;OACf,yBAAyB;OAC1B,GACA,aAAa;OAKZ,MAAM,WAAW,qBAAqB;QACpC,iBAAiB;SACf,SAAS,SAAS;SAClB,QAAQ,SAAS;SACjB,MAAM;SACN,YAAY,qBAAqB,WAAW;SAC5C,aAAa;SACb,qBAAqB,KAAK;SAC1B,eAAe;SACf,MAAMA,uBAAS;SAChB;QACD,WAAW,KAAK;QACjB,CAAC;AAEF,WAAI,CAAC,UAAU;AACb,eAAO,KACL,qEAAqE,iBACtE;AACD,cAAM,IAAI,MACR,uEACD;;OAIH,MAAM,aAAa,SAAS,OAAO;AAEnC,cAAO,MACL,mEAAmE,aACpE;OACD,MAAM,SAAS,YAAY,KAAK,MAAM,WAAW;AACjD,cAAO,MAAM,0CAA0C,QAAQ,WAAW;AAC1E,cAAO;QAEV;;KAEJ,CAAC;aACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BACE,eAAe,YAAY,KAAK,MAAM,aAAa,GAAG,YAAY,KAAK,KAAK;KAC9E,oBAAoB,EAAE,oBAAoB;AACxC,aAAO,UAAU,qBACf,KAAK,YAEH,eAAe,YAAY,KAAK,MAAM,aAAa,GAAG,YAAY,KAAK,KAAK,EAC9E;OACE,MAAM;OACN,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ;OACA,yBAAyB;OAC1B,GACA,aAAa;OAEZ,MAAM,SAAS,eACX,YAAY,KAAK,MAAM,aAAa,GACpC,YAAY,KAAK,KAAK;OAC1B,MAAM,SAAS;QACb,IAAI,OAAO;QACX,MAAM,OAAO;QACd;AACD,WAAI;AACF,kBAAU,kBAAkB,SAAS,MAAM,EACzC,aAAa,QACd,CAAC;AACF,kBAAU,QAAQ,SAAS,MAAM,EAAE,MAAMG,6BAAe,IAAI,CAAC;eACvD;AACN,eAAO,MACL,+EACD;;AAEH,cAAO;QAEV;;KAEH,UAAUH,uBAAS;KACpB,CAAC;QAEF,QAAO,eAAe,YAAY,KAAK,MAAM,aAAa,GAAG,YAAY,KAAK,KAAK;;;;CAM3F,AAAQ,sBAAsB;EAC5B,MAAM,OAAO;AAEb,UAAQ,gBAA0B;AAChC,UAAO,WAAqB;IAI1B,MAAMD,aAAkC;KACtC,WAAW;KACX,MAJgB,KAAK,eAAe,YAAY,iBAAiB;KAMlE;AAGD,QAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;KACtB,0BAA0B;AAMxB,aAAO,IAAI,qBALoC;OAC7C,MAAM;OACN,OAAO;OACP,MAAM,EAAE;OACT,CACgD;;KAEnD,iBAAiB;KACjB,yBAAyB;AACvB,aAAO,UAAU,qBACf,KAAK,YACC,YAAY,KAAK,KAAK,EAC5B;OACE,MAAM;OACN,MAAMC,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ,eAAe;OACf,yBAAyB;OAC1B,GACA,aAAa;AACZ,cAAO,KAAK,sBAAsB,UAAU,WAAW;QAE1D;;KAEJ,CAAC;aACO,KAAK,SAAS,cAAc,OACrC,QAAO,iBAAiB;KACtB,4BAA4B,YAAY,KAAK,KAAK;KAClD,oBAAoB,EAAE,oBAAoB;AACxC,aAAO,UAAU,qBACf,KAAK,YACC,YAAY,KAAK,KAAK,EAC5B;OACE,MAAM;OACN,MAAMA,uBAAS;OACf,WAAW;OACX,aAAa,YAAY;OACzB,aAAa;OACb,qBAAqB,KAAK;OACd;OACZ;OACA,yBAAyB;OAC1B,GACA,aAAa;AACZ,cAAO,KAAK,sBAAsB,UAAU,aAAa,KAAK;QAEjE;;KAEH,UAAUA,uBAAS;KACpB,CAAC;QAEF,QAAO,YAAY,KAAK,KAAK;;;;CAMrC,MAAc,sBACZ,UACA,aACA,WACc;EACd,MAAM,gBAAgB,MAAM,YAAY,KAAKC,UAAQ;EAGrD,MAAMI,cAAoC;GACxC,MAAM,cAAc,KAAK,KAAK,SAAc;IAC1C,IAAI,IAAI;IACR,MAAM,IAAI,IAAI;IACd,QAAQ,IAAI;IACZ,MAAM,IAAI,SAAS,IAAI,MAAM,GAAG;IAChC,YAAY,IAAI,aACZ;KAAE,SAAS,IAAI,WAAW;KAAS,aAAa,IAAI,WAAW;KAAa,GAC5E;IACJ,YAAY,IAAI,aACZ;KAAE,SAAS,IAAI,WAAW;KAAS,aAAa,IAAI,WAAW;KAAa,GAC5E;IACJ,UAAU,IAAI,WACV;KAAE,SAAS,IAAI,SAAS;KAAS,aAAa,IAAI,SAAS;KAAa,GACxE;IACL,EAAE;GACH,MAAM,cAAc;GACpB,OAAO,cAAc;GACrB,UAAU,cAAc,WACpB;IACE,SAAS,cAAc,SAAS;IAChC,aAAa,cAAc,SAAS;IACrC,GACD;GACL;AAED,MAAI;AACF,aAAU,kBAAkB,SAAS,MAAM,EACzC,aAAa,aACd,CAAC;AACF,aAAU,QAAQ,SAAS,MAAM,EAAE,MAAMF,6BAAe,IAAI,CAAC;UACvD;AACN,UAAO,MAAM,0EAA0E;;AAGzF,SAAO;;CAGT,MAAc,sBACZ,UACA,YACc;AACd,SAAO,MAAM,iDAAiD;EAE9D,MAAM,WAAW,MAAM,sBAAsB;GAC3C,iBAAiB;IACf,SAAS,SAAS;IAClB,QAAQ,SAAS;IACjB,MAAM;IACN,YAAY,qBAAqB,WAAW;IAC5C,aAAa;IACb,qBAAqB,KAAK;IAC1B,eAAe;IACf,MAAMH,uBAAS;IAChB;GACD,WAAW,KAAK;GACjB,CAAC;AAEF,MAAI,CAAC,UAAU;AACb,UAAO,KACL,gEAAgE,WAAW,OAC5E;AACD,SAAM,IAAI,MAAM,kEAAkE;;EAGpF,MAAM,cAAc,SAAS;AAC7B,SAAO,IAAI,qBAAqB,YAAY;;CAG9C,AAAU,MACR,QACA,cACA,SACM;AACN,MAAI,CAAC,UAAU,OAAO,OAAO,kBAAkB,YAAY;AACzD,UAAO,KACL,0CAA0C,aAAa,yCACxD;AACD;;EAGF,MAAM,WAAW,OAAO;AAExB,SAAO,gBADS,QAAQ,SAAS;;;;;;;ACtkCrC,IAAa,wBAAb,cAA2C,sBAAsB;CAM/D,YAAY,SAAsC,EAAE,EAAE;AACpD,QAAM,UAAU,OAAO;OANR,uBAAuB;AAOtC,OAAK,OAAO,OAAO,QAAQ,cAAc;AACzC,OAAK,cAAc,IAAI,iBAAiB;AACxC,OAAK,YAAY,cAAc,aAAa;AAC5C,SAAO,MAAM,yDAAyD,KAAK,OAAO;AAIlF,OAAK,qBAAqB;;CAG5B,OAAsC;AACpC,SAAO,MAAM,2CAA2C,KAAK,KAAK,OAAO;AACzE,SAAO,CACL,IAAI,4BAA4B;GAC9B,MAAM;GACN,mBAAmB,CAAC,IAAI;GACxB,QAAQ,kBAAkB;AACxB,WAAO,KAAK,iBAAiB,cAAc;;GAE9C,CAAC,CACH;;CAGH,AAAQ,sBAA4B;AAClC,SAAO,MAAM,sEAAsE;EAGnF,MAAM,UAAU;EAEhB,IAAI,eAAe;AACnB,OAAK,MAAM,CAAC,YAAY,WAAW,OAAO,QAAQ,QAAQ,MAAM,CAC9D,KAAI,WAAW,SAAS,QAAQ,IAAI,UAAU,OAAO,SAAS;AAC5D,UAAO,MAAM,iCAAiC,QAAQ,MAAM,WAAW,gBAAgB;AACvF,QAAK,iBAAiB,OAAO,QAAQ;AACrC;AACA;;AAIJ,MAAI,iBAAiB,GAAG;AACtB,UAAO,MAAM,+EAA+E;AAC5F,UAAO,MACL,kFACD;QAED,QAAO,MACL,mCAAmC,aAAa,iCACjD;;CAIL,AAAQ,iBAAiB,kBAAkE;AACzF,SAAO,MAAM,0DAA0D,KAAK,KAAK,OAAO;EAGxF,MAAM,aAAa,iBAAiB,WAAW,iBAAiB,cAAc;AAI9E,MAAI,cAAc,WAAW,WAAW;AACtC,OAAI,KAAK,gBAAgB,WAAW,UAAU,EAAE;AAC9C,WAAO,MAAM,yEAAyE;AACtF,WAAO;;AAGT,OAAI,WAAW,UAAU,eAAe;AACtC,SAAK,MAAM,WAAW,WAAW,iBAAiB,KAAK,0BAA0B,CAAC;AAClF,WAAO,MAAM,qEAAqE;AAClF,SAAK,oBAAoB,WAAW,UAAU;SAE9C,QAAO,KAAK,4EAA4E;QAG1F,QAAO,KAAK,0DAA0D;AAGxE,SAAO,MAAM,+DAA+D;AAC5E,SAAO;;CAGT,AAAQ,2BAA2B;EACjC,MAAM,OAAO;AAEb,UAAQ,0BAAoC;AAC1C,UAAO,eAEL,KACA,KACA,WACA;AAEA,QAAI,KAAK,SAAS,cAAc,QAC9B;SACE,CAAC,aAAa;MACZ,cAAc,KAAK,UAAU,iBAAiB;MAC9C,YAAY,KAAK,UAAU,YAAY;MACxC,CAAC,CAEF,QAAO,sBAAsB,KAAK,MAAM,KAAK,KAAK,UAAU;;IAIhE,MAAM,SAAS,IAAI,UAAU;IAC7B,MAAM,MAAM,IAAI,OAAO;AAEvB,WAAO,MAAM,wDAAwD,OAAO,GAAG,MAAM;AAGrF,QAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;KACtB,0BAA0B;AACxB,YAAM,IAAI,MACR,oFAAoF,OAAO,GAAG,MAC/F;;KAEH,iBAAiB;KACjB,yBAAyB;MAEvB,MAAMM,aAAqC;OACzC;OACA;OACA,QAAQ;OACR,SAAS,KAAK,kBAAkB,IAAI,WAAW,EAAE,CAAC;OACnD;MAGD,MAAM,gBAAgB,KAAK,YAAY,0BAA0B,IAAI;AACrE,UAAI,CAAC,eAAe;AAElB,cAAO,MAAM,sEAAsE;AACnF,cAAO,sBAAsB,KAAK,MAAM,KAAK,KAAK,UAAU;;AAG9D,aAAO,MAAM,mDAAmD,cAAc;AAI9E,UADoB,KAAK,YAAY,0BAA0B,IAAI,CAEjE,KAAI;OACF,MAAM,UAAU,KAAK,UAAU,mBAAmB,cAAc;AAChE,qBAAc,WAAW,eAAe,QAAQ;AAChD,cAAO,MACL,+DAA+D,gBAChE;eACM,OAAO;AACd,cAAO,MAAM,8DAA8D,MAAM;;MAIrF,MAAM,uBAAuB,UAAU,wBAAwB,cAAc;AAE7E,UAAI,CAAC,qBACH,OAAM,IAAI,MAAM,wCAAwC;AAG1D,aAAOC,sBAAQ,KAAK,4BAA4B;AAC9C,cAAO,UAAU,qBACf,KAAK,YACC,sBAAsB,KAAK,MAAM,KAAK,KAAK,UAAU,EAC3D;QACE,MAAM;QACN,MAAMC,uBAAS;QACf,aAAa;QACb,WAAW;QACX,aAAa,YAAY;QACzB,qBAAqB,KAAK;QAC1B;QACA,mBAAmB,EACjB,SAAS,EACP,iBAAiB,GAClB,EACF;QACD,eAAe;QAChB,GACA,aAAa;AAEZ,eAAO,KAAK,2BAA2B;SACrC;SACA;SACA;SACA;SACA;SACA;SACA,aAAa;SACd,CAAC;SAEL;QACD;;KAEL,CAAC;aACO,KAAK,SAAS,cAAc,QAAQ;AAE7C,SACE,OAAO,aAAa,KAAK,aACzB,CAAC,CAAC,IAAI,QAAQ,iCAEd,QAAO,sBAAsB,KAAK,MAAM,KAAK,KAAK,UAAU;AAG9D,YAAO,MAAM,oDAAoD,OAAO,GAAG,MAAM;AACjF,YAAO,iBAAiB;MACtB,4BAA4B,sBAAsB,KAAK,MAAM,KAAK,KAAK,UAAU;MACjF,oBAAoB,EAAE,oBAAgD;OACpE,MAAMF,aAAqC;QACzC;QACA;QACA,QAAQ;QACR,SAAS,KAAK,kBAAkB,IAAI,WAAW,EAAE,CAAC;QACnD;AAED,cAAO,UAAU,qBACf,KAAK,YACC,sBAAsB,KAAK,MAAM,KAAK,KAAK,UAAU,EAC3D;QACE,MAAM;QACN,MAAME,uBAAS;QACf,aAAa;QACb,aAAa,YAAY;QACzB,WAAW;QACX,qBAAqB,KAAK;QAC1B;QACA,mBAAmB,EACjB,SAAS,EACP,iBAAiB,GAClB,EACF;QACD;QACD,GACA,aAAa;AACZ,eAAO,KAAK,2BAA2B;SACrC;SACA;SACA;SACA;SACA;SACA;SACA,aAAa;SACd,CAAC;SAEL;;MAEH,UAAUA,uBAAS;MACpB,CAAC;UAGF,QAAO,sBAAsB,KAAK,MAAM,KAAK,KAAK,UAAU;;;;CAMpE,MAAc,2BAA2B,EACvC,KACA,KACA,WACA,uBACA,UACA,YACA,eASC;EACD,MAAM,OAAO;AAGb,wBAAQ,KAAK,SAAS,SAAS,IAAI;AACnC,wBAAQ,KAAK,SAAS,SAAS,IAAI;EAGnC,IAAIC,qBAA6C;AAGjD,OAAK,oBAAoB,KAAK,UAAU,aAAa,sBAAsB;AACzE,wBAAqB;IACrB;EAGF,IAAIC;EACJ,IAAIC;EACJ,IAAIC,kBAA0C,EAAE;EAChD,MAAMC,iBAAsC,EAAE;EAG9C,MAAM,YAAa,IAAY,oBAAoB;EAGnD,MAAM,oBAAoB,UAAU,WAAW,KAAK,UAAU;AAC9D,MAAI,kBACF,WAAU,YAAY,SAAU,YAAoB,eAAqB,SAAe;AACtF,wBAAqB;AAGrB,OAAI,OAAO,kBAAkB,SAC3B,mBAAkB,KAAK,kBAAkB,cAAc;QAClD;AACL,4BAAwB;AACxB,QAAI,QACF,mBAAkB,KAAK,kBAAkB,QAAQ;;AAIrD,UAAO,kBAAkB,KAAK,MAAM,YAAY,eAAe,QAAQ;;EAK3E,MAAM,oBAAoB,UAAU,WAAW,KAAK,UAAU;AAC9D,MAAI,kBACF,WAAU,YAAY,SAAU,MAAc,OAA0B;AACtE,mBAAgB,KAAK,aAAa,IAAI,MAAM,QAAQ,MAAM,GAAG,MAAM,KAAK,KAAK,GAAG;AAChF,UAAO,kBAAkB,KAAK,MAAM,MAAM,MAAM;;EAKpD,MAAM,gBAAgB,UAAU,OAAO,KAAK,UAAU;AACtD,MAAI,cACF,WAAU,QAAQ,SAAU,OAAwB,UAAgB,UAAgB;AAClF,OAAI,MACF,gBAAe,KAAK,MAAM;AAE5B,UAAO,cAAc,KAAK,MAAM,OAAO,UAAU,SAAS;;EAK9D,MAAM,cAAc,UAAU,KAAK,KAAK,UAAU;AAClD,MAAI,YACF,WAAU,MAAM,SAAU,OAAa,UAAgB,UAAgB;AACrE,OAAI,MACF,gBAAe,KAAK,MAAM;AAE5B,UAAO,YAAY,KAAK,MAAM,OAAO,UAAU,SAAS;;AAI5D,MAAI;AAEF,SAAM,sBAAsB,KAAK,aAAa,KAAK,KAAK,UAAU;WAC3D,OAAO;AACd,UAAO,MACL,qDAAqD,iBAAiB,QAAQ,MAAM,UAAU,kBAC/F;AACD,OAAI;AACF,cAAU,QAAQ,SAAS,MAAM;KAC/B,MAAMC,6BAAe;KACrB,SAAS,iBAAiB,QAAQ,MAAM,UAAU;KACnD,CAAC;YACK,GAAG;AACV,WAAO,MAAM,8CAA8C,EAAE;;AAE/D,SAAM;;AAGR,MAAI;AAEF,OAAI,CAAC,oBAAoB;AACvB,yBAAqB,IAAI;AACzB,4BAAwB,IAAI;;AAI9B,OAAI,OAAO,KAAK,gBAAgB,CAAC,WAAW,KAAK,IAAI,YAAY;IAC/D,MAAM,aAAa,IAAI,YAAY;AACnC,sBAAkB,KAAK,kBAAkB,WAAW;;AAGtD,UAAO,MACL,sDAAsD,mBAAmB,IAAI,UAAU,cAAc,CAAC,GACvG;GAGD,MAAMC,cAAuC;IAC3C,YAAY;IACZ,eAAe;IACf,SAAS;IACV;AAGD,OAAI,eAAe,SAAS,EAC1B,KAAI;IACF,MAAM,iBAAiB,cAAc,eAAe;IACpD,MAAM,kBAAkB,YAAY,UAAU;AAQ9C,gBAAY,OANQ,MAAM,gBAAgB;KACxC,YAAY;KACZ;KACD,CAAC;AAIF,gBAAY,WAAW,eAAe;YAC/B,OAAO;AACd,WAAO,MAAM,2DAA2D,MAAM;;AAKlF,aAAU,kBAAkB,SAAS,MAAM;IACzC,YAAY;IACZ;IACA,oBAAoB;KAClB,MAAM;MACJ,UAAU,aAAa;MACvB,aAAa,eAAe,YAAY,UAAU,mBAAmB,GAAG;MACzE;KACD,SAAS,EACP,iBAAiB,GAClB;KACF;IACD,UAAU,EACR,UAAU,cAAc,WAAW,SAAS,QAAQ,EACrD;IACF,CAAC;AAGF,iBAAc,aAAa,SAAS,QAAQ;GAE5C,MAAM,UACH,sBAAsB,QAAQ,MAC3B;IAAE,MAAMD,6BAAe;IAAO,SAAS,QAAQ;IAAsB,GACrE,EAAE,MAAMA,6BAAe,IAAI;AAEjC,aAAU,UAAU,SAAS,MAAM,OAAO;GAI1C,MAAM,cAAc,eAAe,YAAY,UAAU,mBAAmB,GAAG;AAC/E,OAAI,eAAe,CAAC,yBAAyB,IAAI,YAAY,EAAE;AAE7D,IAD6B,qBAAqB,aAAa,CAC1C,WAAW,SAAS,QAAQ;AACjD,WAAO,MACL,0CAA0C,SAAS,QAAQ,iDAAiD,eAC5G,EAAE,wBAAwB,MAAM,KAAK,yBAAyB,EAAE,CACjE;;AAGH,aAAU,QAAQ,SAAS,KAAK;AAGhC,OAAI,KAAK,SAAS,cAAc,OAC9B,KAAI;IACF,MAAM,MAAM,oBAAoB,iBAAiB;IACjD,MAAM,gBAAgB,UAAU,yBAAyB,IAAI,SAAS;IAGtE,MAAM,EAAE,QAAQ,aAAa,kBAAkB,mBAC7C,iBAAiB,sBAAsB,oBAAoB;KACzD,MAAM;MACJ,UAAU,aAAa;MACvB,aAAa,eACV,mBAAmB,WAAW,mBAAmB,QAAQ,mBAAoB,GAC/E;MACF;KACD,SAAS,EACP,iBAAiB,GAClB;KACF,CAAC;IAEJ,MAAM,EAAE,QAAQ,cAAc,kBAAkB,oBAC9C,iBAAiB,sBAAsB,aAAa;KAClD,MAAM;MACJ,UAAU,aAAa;MACvB,aAAa,eAAe,YAAY,QAAQ,mBAAmB,GAAG;MACvE;KACD,SAAS,EACP,iBAAiB,GAClB;KACF,CAAC;IAEJ,MAAM,YAAY;KAChB,SAAS;KACT,QAAQ,SAAS;KACjB,cAAc;KACd,MAAM,mBAAmB;KACzB,aAAa;KACb,qBAAqB,KAAK;KAC1B,eAAe,mBAAmB;KAClC,YAAY;KACZ;KACA;KACA;KACA,iBAAiB,iBAAiB,0BAA0B,YAAY;KACxE,kBAAkB,iBAAiB,0BAA0B,aAAa;KAC1E;KACA;KACA,MAAMN,uBAAS;KACf,aAAa,YAAY;KACzB,QAAQ;MACN,OAAO,sBAAsB,QAAQ,MAAM,WAAW,QAAQ,WAAW;MACzE,UAAU,sBAAsB,QAAQ,MAAM,QAAQ,uBAAuB;MAC9E;KACD,WAAW;MACT,SAAS,KAAK,MAAM,IAAI,SAAS,GAAG,IAAK;MACzC,OAAQ,IAAI,SAAS,GAAG,MAAQ;MACjC;KACD,UAAU;MAAE,SAAS;MAAG,OAAO;MAAG;KAClC,YAAY;KACZ,eAAe;KACf,UAAU;KACX;AAED,UAAM,KAAK,UAAU,yBAAyB,UAAU;YACjD,GAAG;AACV,WAAO,MAAM,qEAAqE,EAAE;;WAGjF,OAAO;AACd,UAAO,MACL,qDAAqD,iBAAiB,QAAQ,MAAM,UAAU,kBAC/F;AACD,OAAI;AACF,cAAU,QAAQ,SAAS,MAAM;KAC/B,MAAMM,6BAAe;KACrB,SAAS,iBAAiB,QAAQ,MAAM,UAAU;KACnD,CAAC;YACK,GAAG;AACV,WAAO,MAAM,8CAA8C,EAAE;;;;;;;;CASnE,AAAQ,oBACN,KACA,UACA,YACA,gBACM;EAGN,MAAM,YAAY,IAAI,mBAAmB,IAAI,QAAQ;EAErD,MAAME,oBAA8B,EAAE;EACtC,IAAIC,wBAA2D;EAG/D,MAAM,eAAe,UAAU,MAAM,KAAK,UAAU;AACpD,MAAI,aACF,WAAU,OAAO,SAAS,KAAK,MAAe;GAC5C,MAAM,QAAQ,aAAa,KAAK;AAChC,OACE,UACC,0BAA0B,UAAU,0BAA0B,kBAC/D;AACA,4BAAwB;AACxB,sBAAkB,KAAK,OAAO,KAAK,MAAM,CAAC;;AAE5C,UAAO;;AAKX,MAAI,OAAO,UAAU,SAAS,cAAc,OAAO,UAAU,gBAAgB,YAAY;AACvF,UAAO,MACL,mGACD;AACD;;AAIF,YAAU,KAAK,gBAAgB;AAC7B,aAAU,YAAY,SAAS,UAA2B;AACxD,QACE,UACC,0BAA0B,UAAU,0BAA0B,kBAC/D;AACA,6BAAwB;AACxB,uBAAkB,KAAK,OAAO,KAAK,MAAM,CAAC;;KAE5C;IACF;AAGF,YAAU,YAAY,OAAO,OAAO,UAA4B;AAC9D,OAAI,MACF,mBAAkB,KAAK,OAAO,KAAK,MAAM,CAAC;AAG5C,OAAI,kBAAkB,SAAS,EAC7B,KAAI;IACF,MAAM,aAAa,OAAO,OAAO,kBAAkB;IAGnD,MAAM,cAAc,MAAM,gBAAgB;KACxC;KACA,iBAAiB,UAAU,QAAQ;KACpC,CAAC;IAGF,MAAMC,oBAA4C;KAChD,GAAG;KACH,MAAM;KACN,UAAU,WAAW;KACtB;AAED,QAAI,eACF,gBAAe,kBAAkB;AAInC,cAAU,kBAAkB,SAAS,MAAM;KACzC,YAAY;KACZ,mBAAmB;MACjB,MAAM;OACJ,UAAU,aAAa;OACvB,aAAa,eAAe,UAAU,QAAQ,mBAAmB,GAAG;OACrE;MACD,SAAS,EACP,iBAAiB,GAClB;MACF;KACF,CAAC;AAEF,WAAO,MACL,qDAAqD,UAAU,OAAO,GAAG,UAAU,IAAI,IAAI,WAAW,OAAO,QAC9G;YACM,OAAO;AACd,WAAO,MAAM,0DAA0D,MAAM;;IAGjF;;CAGJ,AAAQ,kBACN,SACwB;EACxB,MAAMC,aAAqC,EAAE;AAC7C,OAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,QAAQ,CAChD,KAAI,UAAU,OACZ,YAAW,IAAI,aAAa,IAAI,MAAM,QAAQ,MAAM,GAAG,MAAM,KAAK,KAAK,GAAG,OAAO,MAAM;AAG3F,SAAO;;CAGT,AAAQ,MACN,QACA,cACA,SACM;AACN,OAAK,QAAQ,cAAc,QAAQ;;;;;;;;;AC9oBvC,IAAY,wEAAL;AACL;AACA;AACA;AACA;AACA;AACA;;;;;;;ACbF,IAAa,wBAAb,cAA2C,sBAAsB;CAM/D,YAAY,SAAsC,EAAE,EAAE;AACpD,QAAM,kBAAkB,OAAO;OANhB,uBAAuB;OAGhC,qBAA6C,EAAE;AAIrD,OAAK,OAAO,OAAO,QAAQ,cAAc;AACzC,OAAK,YAAY,cAAc,aAAa;;CAG9C,OAAsC;AACpC,SAAO,CACL,IAAI,4BAA4B;GAC9B,MAAM;GACN,mBAAmB,CAAC,OAAO,MAAM;GACjC,QAAQ,kBAAuC,KAAK,mBAAmB,cAAc;GACtF,CAAC,CACH;;CAGH,AAAQ,mBAAmB,cAAwD;AACjF,MAAI,KAAK,gBAAgB,aAAa,EAAE;AACtC,UAAO,MAAM,kEAAkE;AAC/E,UAAO;;AAIT,OAAK,yBAAyB,aAAa;AAG3C,SAAO,MAAM,4DAA4D;AACzE,OAAK,MAAM,cAAc,iBAAiB,yBAA8B;GACtE,MAAM,OAAO;AACb,UAAO,MAAM,sDAAsD;AAEnE,UAAO,MAAM,eAAe;IAC1B,YAAY,GAAG,MAAa;AAC1B,YAAO,MAAM,iEAAiE;AAsB9E,YAnBqB,IAAI,qBAAqB,GAAG,KAAK,CAGlB,SAAS,EAC3C,OAAO,EACL,MAAM,eAAe,EAAE,OAAO,WAAW,MAAM,eAAe,SAAc;AAC1E,aAAO,MACL,uDAAuD,MAAM,GAAG,YACjE;AACD,aAAO,KAAK,uBAAuB;OACjC;OACA;OACA,MAAM;OACN;OACD,CAAC;QAEL,EACF,CAAC;;;IAKN;AAEF,OAAK,oBAAoB,aAAa;AACtC,SAAO,MAAM,0DAA0D;AAEvE,SAAO;;CAGT,AAAQ,yBAAyB,eAA0C;EAGzE,MAAM,kBAAkB,cAAc,UAAU,EAAE;AAElD,OAAK,qBAAqB;GACxB;IACE,MAAM,qBAAqB;IAC3B,YACE,cAAc,iCACd,gBAAgB;IACnB;GACD;IACE,MAAM,qBAAqB;IAC3B,YACE,cAAc,mCACd,gBAAgB;IACnB;GACD;IACE,MAAM,qBAAqB;IAC3B,YACE,cAAc,mCACd,gBAAgB;IACnB;GACD;IACE,MAAM,qBAAqB;IAC3B,YACE,cAAc,+BAA+B,gBAAgB;IAChE;GACD;IACE,MAAM,qBAAqB;IAC3B,YACE,cAAc,8BAA8B,gBAAgB;IAC/D;GACD;IACE,MAAM,qBAAqB;IAC3B,YAAY,cAAc,iBAAiB,gBAAgB;IAC5D;GACF;;CAGH,AAAQ,uBAAuB,EAC7B,OACA,WACA,MACA,SAMe;EACf,MAAMC,aAA+B;GACnC;GACA;GACA;GACD;AAED,SAAO,MACL,yDAAyD,MAAM,GAAG,UAAU,MAAM,KAAK,KAAK,OAC7F;AAED,MAAI,KAAK,SAAS,cAAc,OAC9B,QAAO,iBAAiB;GACtB,4BAA4B,MAAM,KAAK;GACvC,oBAAoB,EAAE,oBAAoB;AACxC,WAAO,UAAU,qBACf,KAAK,YACC,MAAM,KAAK,EACjB;KACE,MAAM,UAAU;KAChB,MAAMC,uBAAS;KACf,WAAW;KACX,aAAa,YAAY;KACzB,aAAa;KACb,qBAAqB,KAAK;KAC1B;KACA;KACD,GACA,aAAa;AACZ,YAAO,KAAK,6BAA6B,UAAU,OAAO,KAAK;MAElE;;GAEH,UAAUA,uBAAS;GACpB,CAAC;WACO,KAAK,SAAS,cAAc,QAAQ;GAC7C,MAAM,aAAa,kBAAkB,CAAC,wBAAwB,CAAC;AAE/D,UAAO,iBAAiB;IACtB,0BAA0B,MAAM,KAAK;IACrC,iBAAiB;IACjB,yBAAyB;AACvB,YAAO,UAAU,qBACf,KAAK,YACC,MAAM,KAAK,EACjB;MACE,MAAM,UAAU;MAChB,MAAMA,uBAAS;MACf,WAAW;MACX,aAAa,YAAY;MACzB,aAAa;MACb,qBAAqB,KAAK;MAC1B;MACA,eAAe;MAChB,GACA,aAAa;AACZ,aAAO,KAAK,6BAA6B,UAAU,YAAY,WAAW;OAE7E;;IAEJ,CAAC;QAGF,QAAO,MAAM,KAAK;;CAItB,MAAc,6BACZ,UACA,OACA,MACc;AACd,MAAI;AACF,UAAO,MAAM,qDAAqD;GAGlE,MAAM,SAAS,MAAM,MAAM,KAAK;GAGhC,MAAMC,cAAiC;IACrC,cAAc;IACd,mBAAmB;IACpB;AAED,OAAI;AACF,cAAU,kBAAkB,SAAS,MAAM,EACzC,aACD,CAAC;AACF,cAAU,QAAQ,SAAS,MAAM,EAAE,MAAMC,6BAAe,IAAI,CAAC;YACtD,WAAW;AAClB,WAAO,MAAM,yDAAyD,UAAU;;AAGlF,UAAO;WACAC,OAAY;AACnB,UAAO,MAAM,mDAAmD,MAAM,UAAU;AAEhF,OAAI;IAEF,MAAM,iBAAiB,KAAK,yBAAyB,MAAM;IAG3D,MAAMC,qBAA+C,KAAK,YAAY,MAAM;AAC5E,QAAI,eACF,oBAAmB,eAAe;IAIpC,MAAMH,cAAiC;KACrC,cAAc;KACd,mBAAmB;KACpB;AAED,cAAU,kBAAkB,SAAS,MAAM,EACzC,aACD,CAAC;AACF,cAAU,QAAQ,SAAS,MAAM;KAC/B,MAAMC,6BAAe;KACrB,SAAS,MAAM;KAChB,CAAC;YACK,WAAW;AAClB,WAAO,MACL,8EACA,UACD;;AAIH,SAAM;;;CAIV,MAAc,6BACZ,UACA,YACA,YACc;EACd,MAAM,WAAW,MAAM,sBAAsB;GAC3C,iBAAiB;IACf,SAAS,SAAS;IAClB,QAAQ,SAAS;IACjB,MAAM,UAAU,WAAW;IAC3B;IACA,aAAa;IACb,qBAAqB,KAAK;IAC1B,eAAe,WAAW;IAC1B,MAAMF,uBAAS;IACf;IACD;GACD,WAAW,KAAK;GACjB,CAAC;AAEF,MAAI,CAAC,UAAU;AACb,UAAO,KACL,oEAAoE,WAAW,MAAM,GAAG,WAAW,YACpG;AACD,SAAM,IAAI,MACR,wEAAwE,WAAW,MAAM,GAAG,WAAW,YACxG;;AAGH,SAAO,MACL,iEAAiE,WAAW,MAAM,GAAG,WAAW,YACjG;EAED,MAAM,cAAc,SAAS;AAG7B,MAAI,YAAY,sBAAsB,SAAS;GAC7C,MAAM,WAAW,YAAY;AAG7B,OAAI,SAAS,cAAc;IACzB,MAAM,aAAa,KAAK,6BAA6B,SAAS,aAAa;AAC3E,QAAI,WACF,QAAO,eAAe,UAAU,WAAW,UAAU;;AAIzD,aAAU,QAAQ,SAAS,MAAM;IAC/B,MAAME,6BAAe;IACrB,SAAS,SAAS,WAAW;IAC9B,CAAC;AAEF,SAAM;;AAIR,YAAU,QAAQ,SAAS,MAAM,EAAE,MAAMA,6BAAe,IAAI,CAAC;AAC7D,SAAO,YAAY;;CAGrB,AAAQ,yBAAyB,OAA8C;AAC7E,OAAK,MAAM,aAAa,KAAK,mBAC3B,KAAI,iBAAiB,UAAU,WAC7B,QAAO,UAAU;;CAMvB,AAAQ,6BAA6B,WAAsC;AACzE,OAAK,MAAM,aAAa,KAAK,mBAC3B,KAAI,UAAU,SAAS,UACrB,QAAO,UAAU;AAGrB,SAAO;;;;;CAMT,AAAQ,YAAY,OAAsC;EACxD,MAAMG,SAAmC,IAAI,MAAM,MAAM,QAAQ;AACjE,SAAO,OAAO,MAAM;AACpB,SAAO,QAAQ,MAAM;AAGrB,OAAK,MAAM,OAAO,MAChB,KAAI,MAAM,eAAe,IAAI,CAC3B,KAAI;AACF,UAAO,OAAO,MAAM;WACb,GAAG;AAMhB,SAAO;;CAGT,AAAQ,MAAM,QAAa,cAAsB,SAAuC;AACtF,OAAK,QAAQ,cAAc,QAAQ;;;;;;;AC5WvC,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,sBAAsB,QAAQ,oBAAoB,QAAQ,kBAAkB,KAAK;CAEzF,MAAM,wBAAwB,mBAAS,kBAAkB,iDAAiD;CAC1G,SAAS,gBAAgB,WAAS;AAC9B,SAAOC,UAAQ,SAAS,sBAAsB,KAAK;;AAEvD,SAAQ,kBAAkB;CAC1B,SAAS,kBAAkB,WAAS;AAChC,SAAOA,UAAQ,YAAY,qBAAqB;;AAEpD,SAAQ,oBAAoB;CAC5B,SAAS,oBAAoB,WAAS;AAClC,SAAOA,UAAQ,SAAS,qBAAqB,KAAK;;AAEtD,SAAQ,sBAAsB;;;;;;ACf9B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,2BAA2B,QAAQ,mCAAmC,QAAQ,+BAA+B,QAAQ,iBAAiB,QAAQ,0BAA0B,QAAQ,+BAA+B,QAAQ,6BAA6B,KAAK;AACjQ,SAAQ,6BAA6B;AACrC,SAAQ,+BAA+B;AACvC,SAAQ,0BAA0B;AAElC,SAAQ,iBAAiB;AAEzB,SAAQ,+BAA+B;AAEvC,SAAQ,mCAAmC;AAE3C,SAAQ,2BAA2B;;;;;;AC3BnC,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,0BAA0B,QAAQ,oBAAoB,QAAQ,cAAc,QAAQ,oBAAoB,KAAK;CAgBrH,MAAMC;CACN,MAAMC;CACN,SAAS,kBAAkB,UAAU;AACjC,SAAO,SAAS,QAAQ,QAAQ,YAAY;GACxC,MAAM,QAAQ,GAAG,SAAS,WAAW,KAAKA,cAAY,0BAA0B,KAAK;AACrF,UAAO,MAAM,SAASA,cAAY,2BAA2B,SAAS;KACvE,GAAG;;AAEV,SAAQ,oBAAoB;CAC5B,SAAS,YAAY,SAAS;AAC1B,SAAO,QAAQ,eAAe,CAAC,KAAK,CAAC,KAAK,WAAW;GACjD,IAAI,QAAQ,GAAG,mBAAmB,IAAI,CAAC,GAAG,mBAAmB,MAAM,MAAM;AAGzE,OAAI,MAAM,aAAa,OACnB,UAASA,cAAY,+BAA+B,MAAM,SAAS,UAAU;AAEjF,UAAO;IACT;;AAEN,SAAQ,cAAc;CACtB,SAAS,kBAAkB,OAAO;EAC9B,MAAM,aAAa,MAAM,MAAMA,cAAY,6BAA6B;AACxE,MAAI,WAAW,UAAU,EACrB;EACJ,MAAM,cAAc,WAAW,OAAO;AACtC,MAAI,CAAC,YACD;EACJ,MAAM,iBAAiB,YAAY,QAAQA,cAAY,2BAA2B;AAClF,MAAI,kBAAkB,EAClB;EACJ,MAAM,MAAM,mBAAmB,YAAY,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC;EAC/E,MAAM,QAAQ,mBAAmB,YAAY,UAAU,iBAAiB,EAAE,CAAC,MAAM,CAAC;EAClF,IAAI;AACJ,MAAI,WAAW,SAAS,EACpB,aAAY,GAAGD,SAAM,gCAAgC,WAAW,KAAKC,cAAY,6BAA6B,CAAC;AAEnH,SAAO;GAAE;GAAK;GAAO;GAAU;;AAEnC,SAAQ,oBAAoB;;;;;CAK5B,SAAS,wBAAwB,OAAO;AACpC,MAAI,OAAO,UAAU,YAAY,MAAM,WAAW,EAC9C,QAAO,EAAE;AACb,SAAO,MACF,MAAMA,cAAY,wBAAwB,CAC1C,KAAI,UAAS;AACd,UAAO,kBAAkB,MAAM;IACjC,CACG,QAAO,YAAW,YAAY,UAAa,QAAQ,MAAM,SAAS,EAAE,CACpE,QAAQ,SAAS,YAAY;AAE9B,WAAQ,QAAQ,OAAO,QAAQ;AAC/B,UAAO;KACR,EAAE,CAAC;;AAEV,SAAQ,0BAA0B;;;;;;AC7DlC,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,uBAAuB,KAAK;CACpC,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;;;;;;;CAON,IAAM,uBAAN,MAA2B;EACvB,OAAO,WAAS,SAAS,QAAQ;GAC7B,MAAM,UAAUH,SAAM,YAAY,WAAWI,UAAQ;AACrD,OAAI,CAAC,YAAY,GAAGH,qBAAmB,qBAAqBG,UAAQ,CAChE;GACJ,MAAM,YAAY,GAAGD,UAAQ,aAAa,QAAQ,CAC7C,QAAQ,SAAS;AAClB,WAAO,KAAK,UAAUD,cAAY;KACpC,CACG,MAAM,GAAGA,cAAY,6BAA6B;GACvD,MAAM,eAAe,GAAGC,UAAQ,mBAAmB,SAAS;AAC5D,OAAI,YAAY,SAAS,EACrB,QAAO,IAAI,SAASD,cAAY,gBAAgB,YAAY;;EAGpE,QAAQ,WAAS,SAAS,QAAQ;GAC9B,MAAM,cAAc,OAAO,IAAI,SAASA,cAAY,eAAe;GACnE,MAAM,gBAAgB,MAAM,QAAQ,YAAY,GAC1C,YAAY,KAAKA,cAAY,wBAAwB,GACrD;AACN,OAAI,CAAC,cACD,QAAOE;GACX,MAAM,UAAU,EAAE;AAClB,OAAI,cAAc,WAAW,EACzB,QAAOA;AAGX,GADc,cAAc,MAAMF,cAAY,wBAAwB,CAChE,SAAQ,UAAS;IACnB,MAAM,WAAW,GAAGC,UAAQ,mBAAmB,MAAM;AACrD,QAAI,SAAS;KACT,MAAM,eAAe,EAAE,OAAO,QAAQ,OAAO;AAC7C,SAAI,QAAQ,SACR,cAAa,WAAW,QAAQ;AAEpC,aAAQ,QAAQ,OAAO;;KAE7B;AACF,OAAI,OAAO,QAAQ,QAAQ,CAAC,WAAW,EACnC,QAAOC;AAEX,UAAOJ,SAAM,YAAY,WAAWI,WAASJ,SAAM,YAAY,cAAc,QAAQ,CAAC;;EAE1F,SAAS;AACL,UAAO,CAACE,cAAY,eAAe;;;AAG3C,SAAQ,uBAAuB;;;;;;AC1D/B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,gBAAgB,KAAK;;;;;;;;;;;;;;;;;;CAkB7B,IAAM,gBAAN,MAAoB;;;;;;;EAOhB,YAAY,aAAa,gBAAgB;AACrC,QAAK,kBAAkB;AACvB,QAAK,eAAe,YAAY,KAAK;AACrC,QAAK,qBAAqB,eAAe,KAAK;;;;;;EAMlD,MAAM;GACF,MAAM,QAAQ,KAAK,gBAAgB,KAAK,GAAG,KAAK;AAChD,UAAO,KAAK,eAAe;;;AAGnC,SAAQ,gBAAgB;;;;;;ACxCxB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,mBAAmB,QAAQ,iBAAiB,QAAQ,qBAAqB,KAAK;CACtF,MAAMG;CACN,SAAS,mBAAmB,YAAY;EACpC,MAAM,MAAM,EAAE;AACd,MAAI,OAAO,eAAe,YAAY,cAAc,KAChD,QAAO;AAEX,OAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,WAAW,EAAE;AACjD,OAAI,CAAC,eAAe,IAAI,EAAE;AACtB,aAAM,KAAK,KAAK,0BAA0B,MAAM;AAChD;;AAEJ,OAAI,CAAC,iBAAiB,IAAI,EAAE;AACxB,aAAM,KAAK,KAAK,wCAAwC,MAAM;AAC9D;;AAEJ,OAAI,MAAM,QAAQ,IAAI,CAClB,KAAI,OAAO,IAAI,OAAO;OAGtB,KAAI,OAAO;;AAGnB,SAAO;;AAEX,SAAQ,qBAAqB;CAC7B,SAAS,eAAe,KAAK;AACzB,SAAO,OAAO,QAAQ,YAAY,IAAI,SAAS;;AAEnD,SAAQ,iBAAiB;CACzB,SAAS,iBAAiB,KAAK;AAC3B,MAAI,OAAO,KACP,QAAO;AAEX,MAAI,MAAM,QAAQ,IAAI,CAClB,QAAO,iCAAiC,IAAI;AAEhD,SAAO,+BAA+B,IAAI;;AAE9C,SAAQ,mBAAmB;CAC3B,SAAS,iCAAiC,KAAK;EAC3C,IAAI;AACJ,OAAK,MAAM,WAAW,KAAK;AAEvB,OAAI,WAAW,KACX;AACJ,OAAI,CAAC,MAAM;AACP,QAAI,+BAA+B,QAAQ,EAAE;AACzC,YAAO,OAAO;AACd;;AAGJ,WAAO;;AAEX,OAAI,OAAO,YAAY,KACnB;AAEJ,UAAO;;AAEX,SAAO;;CAEX,SAAS,+BAA+B,KAAK;AACzC,UAAQ,OAAO,KAAf;GACI,KAAK;GACL,KAAK;GACL,KAAK,SACD,QAAO;;AAEf,SAAO;;;;;;;ACrEX,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,sBAAsB,KAAK;CACnC,MAAMC;;;;;CAKN,SAAS,sBAAsB;AAC3B,UAAQ,OAAO;AACX,YAAM,KAAK,MAAM,mBAAmB,GAAG,CAAC;;;AAGhD,SAAQ,sBAAsB;;;;;CAK9B,SAAS,mBAAmB,IAAI;AAC5B,MAAI,OAAO,OAAO,SACd,QAAO;MAGP,QAAO,KAAK,UAAU,iBAAiB,GAAG,CAAC;;;;;;;CAQnD,SAAS,iBAAiB,IAAI;EAC1B,MAAM,SAAS,EAAE;EACjB,IAAI,UAAU;AACd,SAAO,YAAY,MAAM;AACrB,UAAO,oBAAoB,QAAQ,CAAC,SAAQ,iBAAgB;AACxD,QAAI,OAAO,cACP;IACJ,MAAM,QAAQ,QAAQ;AACtB,QAAI,MACA,QAAO,gBAAgB,OAAO,MAAM;KAE1C;AACF,aAAU,OAAO,eAAe,QAAQ;;AAE5C,SAAO;;;;;;;AC5CX,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,qBAAqB,QAAQ,wBAAwB,KAAK;;CAGlE,IAAI,mBAAmB,mCAA2B,sBAAsB;;;;;CAKxE,SAAS,sBAAsB,SAAS;AACpC,oBAAkB;;AAEtB,SAAQ,wBAAwB;;;;;CAKhC,SAAS,mBAAmB,IAAI;AAC5B,MAAI;AACA,mBAAgB,GAAG;WAEhB,IAAI;;AAEf,SAAQ,qBAAqB;;;;;;ACvB7B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,sBAAsB,KAAK;AAEnC,EAAC,SAAU,qBAAqB;AAC5B,sBAAoB,eAAe;AACnC,sBAAoB,cAAc;AAClC,sBAAoB,0BAA0B;AAC9C,sBAAoB,yBAAyB;AAC7C,sBAAoB,6BAA6B;AACjD,sBAAoB,kBAAkB;IACjB,QAAQ,wBAAwB,QAAQ,sBAAsB,EAAE,EAAE;;;;;;ACV3F,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,mBAAmB,QAAQ,sBAAsB,QAAQ,8CAA8C,QAAQ,+CAA+C,QAAQ,gCAAgC,QAAQ,uCAAuC,KAAK;CAClQ,MAAMC;CACN,MAAMC;CACN,MAAM,yBAAyB;;;;CAI/B,MAAM,2BAA2B,CAAC,oBAAoB;CACtD,SAAS,iBAAiB,KAAK;AAC3B,SAAQ,yBAAyB,QAAQ,IAAI,GAAG;;CAEpD,MAAM,2BAA2B;EAC7B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACH;CACD,SAAS,gBAAgB,KAAK;AAC1B,SAAQ,yBAAyB,QAAQ,IAAI,GAAG;;CAEpD,MAAM,yBAAyB;EAC3B;EACA;EACA;EACH;CACD,SAAS,cAAc,KAAK;AACxB,SAAO,uBAAuB,QAAQ,IAAI,GAAG;;AAEjD,SAAQ,uCAAuC;AAC/C,SAAQ,gCAAgC;AACxC,SAAQ,+CAA+C;AACvD,SAAQ,8CAA8C;;;;AAItD,SAAQ,sBAAsB;EAC1B,mBAAmB;EACnB,gBAAgB;EAChB,+BAA+B;EAC/B,4BAA4B;EAC5B,UAAU;EACV,yBAAyB;EACzB,WAAW;EACX,yBAAyB;EACzB,gCAAgC;EAChC,yBAAyB;EACzB,yBAAyB;EACzB,0BAA0B;EAC1B,iCAAiC;EACjC,0BAA0B;EAC1B,0BAA0B;EAC1B,iCAAiC;EACjC,iCAAiC;EACjC,+BAA+B;EAC/B,+BAA+B;EAC/B,2BAA2B;EAC3B,6BAA6B;EAC7B,oCAAoC;EACpC,qCAAqC;EACrC,kCAAkC;EAClC,4BAA4B;EAC5B,mCAAmC;EACnC,oCAAoC;EACpC,iCAAiC;EACjC,4BAA4B;EAC5B,mCAAmC;EACnC,oCAAoC;EACpC,iCAAiC;EACjC,+BAA+B;EAC/B,gBAAgBD,SAAM,aAAa;EACnC,uBAAuB,EAAE;EACzB,kBAAkB,CAAC,gBAAgB,UAAU;EAC7C,0BAA0B;EAC1B,mBAAmB;EACnB,mCAAmC,QAAQ;EAC3C,4BAA4B,QAAQ;EACpC,wCAAwC,QAAQ;EAChD,iCAAiC,QAAQ;EACzC,6CAA6C,QAAQ;EACrD,sCAAsC,QAAQ;EAC9C,6BAA6B;EAC7B,4BAA4B;EAC5B,2CAA2C,QAAQ;EACnD,0CAA0C,QAAQ;EAClD,sBAAsB;EACtB,qBAAqBC,aAAW,oBAAoB;EACpD,yBAAyB;EACzB,oBAAoB;EACpB,6BAA6B;EAC7B,oCAAoC;EACpC,qCAAqC;EACrC,kCAAkC;EAClC,gCAAgC;EAChC,uCAAuC;EACvC,wCAAwC;EACxC,qCAAqC;EACrC,gCAAgC;EAChC,uCAAuC;EACvC,wCAAwC;EACxC,qCAAqC;EACrC,+BAA+B;EAC/B,sCAAsC;EACtC,uCAAuC;EACvC,oCAAoC;EACpC,uCAAuC;EACvC,8CAA8C;EAC9C,+CAA+C;EAC/C,4CAA4C;EAC5C,6BAA6B;EAC7B,oCAAoC;EACpC,qCAAqC;EACrC,kCAAkC;EAClC,mDAAmD;EACnD,+BAA+B,EAAE;EACpC;;;;;;CAMD,SAAS,aAAa,KAAK,aAAa,QAAQ;AAC5C,MAAI,OAAO,OAAO,SAAS,YACvB;AAIJ,cAAY,OAFE,OAAO,OAAO,KAAK,CAER,aAAa,KAAK;;;;;;;;;;CAU/C,SAAS,YAAY,MAAM,aAAa,QAAQ,MAAM,WAAW,MAAM,UAAU;AAC7E,MAAI,OAAO,OAAO,UAAU,aAAa;GACrC,MAAM,QAAQ,OAAO,OAAO,MAAM;AAClC,OAAI,CAAC,MAAM,MAAM,CACb,KAAI,QAAQ,IACR,aAAY,QAAQ;YAEf,QAAQ,IACb,aAAY,QAAQ;OAGpB,aAAY,QAAQ;;;;;;;;;;CAYpC,SAAS,gBAAgB,MAAM,QAAQ,OAAO,YAAY,wBAAwB;EAC9E,MAAM,aAAa,MAAM;AACzB,MAAI,OAAO,eAAe,SACtB,QAAO,QAAQ,WAAW,MAAM,UAAU,CAAC,KAAI,MAAK,EAAE,MAAM,CAAC;;CAIrE,MAAM,cAAc;EAChB,KAAKD,SAAM,aAAa;EACxB,SAASA,SAAM,aAAa;EAC5B,OAAOA,SAAM,aAAa;EAC1B,MAAMA,SAAM,aAAa;EACzB,MAAMA,SAAM,aAAa;EACzB,OAAOA,SAAM,aAAa;EAC1B,MAAMA,SAAM,aAAa;EAC5B;;;;;;;CAOD,SAAS,mBAAmB,KAAK,aAAa,QAAQ;EAClD,MAAM,QAAQ,OAAO;AACrB,MAAI,OAAO,UAAU,UAAU;GAC3B,MAAM,WAAW,YAAY,MAAM,aAAa;AAChD,OAAI,YAAY,KACZ,aAAY,OAAO;;;;;;;CAQ/B,SAAS,iBAAiB,QAAQ;EAC9B,MAAM,cAAc,EAAE;AACtB,OAAK,MAAM,OAAO,QAAQ,qBAAqB;GAC3C,MAAM,MAAM;AACZ,WAAQ,KAAR;IACI,KAAK;AACD,wBAAmB,KAAK,aAAa,OAAO;AAC5C;IACJ,QACI,KAAI,iBAAiB,IAAI,CACrB,cAAa,KAAK,aAAa,OAAO;aAEjC,gBAAgB,IAAI,CACzB,aAAY,KAAK,aAAa,OAAO;aAEhC,cAAc,IAAI,CACvB,iBAAgB,KAAK,aAAa,OAAO;SAExC;KACD,MAAM,QAAQ,OAAO;AACrB,SAAI,OAAO,UAAU,eAAe,UAAU,KAC1C,aAAY,OAAO,OAAO,MAAM;;;;AAKpD,SAAO;;AAEX,SAAQ,mBAAmB;;;;;;AClP3B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,wBAAwB,QAAQ,SAAS,KAAK;CACtD,MAAME;;;;CAIN,SAAS,SAAS;EACd,MAAM,cAAc,GAAGA,gBAAc,kBAAkB,QAAQ,IAAI;AACnE,SAAO,OAAO,OAAO,EAAE,EAAEA,gBAAc,qBAAqB,WAAW;;AAE3E,SAAQ,SAAS;CACjB,SAAS,wBAAwB;AAC7B,UAAQ,GAAGA,gBAAc,kBAAkB,QAAQ,IAAI;;AAE3D,SAAQ,wBAAwB;;;;;;ACdhC,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,cAAc,KAAK;;AAG3B,SAAQ,cAAc,OAAO,eAAe,WAAW,aAAa;;;;;;ACJpE,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,cAAc,KAAK;CAC3B,SAAS,SAAS,UAAU;AAExB,MAAI,YAAY,MAAM,YAAY,GAC9B,QAAO,WAAW;AAGtB,MAAI,YAAY,MAAM,YAAY,IAC9B,QAAO,WAAW;AAGtB,SAAO,WAAW;;CAEtB,SAAS,YAAY,QAAQ;EACzB,MAAM,MAAM,IAAI,WAAW,OAAO,SAAS,EAAE;EAC7C,IAAI,SAAS;AACb,OAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;GACvC,MAAM,KAAK,SAAS,OAAO,WAAW,EAAE,CAAC;GACzC,MAAM,KAAK,SAAS,OAAO,WAAW,IAAI,EAAE,CAAC;AAC7C,OAAI,YAAa,MAAM,IAAK;;AAEhC,SAAO;;AAEX,SAAQ,cAAc;;;;;;ACvCtB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,cAAc,KAAK;CAgB3B,MAAMC;CACN,SAAS,YAAY,QAAQ;AACzB,SAAO,OAAO,MAAM,GAAGA,kBAAgB,aAAa,OAAO,CAAC,CAAC,SAAS,SAAS;;AAEnF,SAAQ,cAAc;;;;;;ACNtB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,oBAAoB,KAAK;CACjC,MAAMC,kBAAgB;CACtB,MAAMC,mBAAiB;;;;CAIvB,IAAMC,sBAAN,MAAwB;EACpB,cAAc;;;;;AAKV,QAAK,kBAAkBC,iBAAeF,iBAAe;;;;;AAKrD,QAAK,iBAAiBE,iBAAeH,gBAAc;;;AAG3D,SAAQ,oBAAoBE;CAC5B,MAAME,kBAAgB,OAAO,YAAYH,iBAAe;CACxD,SAASE,iBAAe,OAAO;AAC3B,SAAO,SAAS,aAAa;AACzB,QAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,GAAG,IAG3B,iBAAc,cAAe,KAAK,QAAQ,GAAG,KAAK,OAAQ,GAAG,IAAI,EAAE;AAGvE,QAAK,IAAI,IAAI,GAAG,IAAI,OAAO,IACvB,KAAIC,gBAAc,KAAK,EACnB;YAEK,MAAM,QAAQ,EACnB,iBAAc,QAAQ,KAAK;AAGnC,UAAOA,gBAAc,SAAS,OAAO,GAAG,MAAM;;;;;;;;ACvCtD,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,gBAAgB,KAAK;CAC7B,MAAM,eAAe,QAAQ,aAAa;AAC1C,SAAQ,gBAAgB,aAAa;;;;;;ACHrC,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,UAAU,KAAK;AAEvB,SAAQ,UAAU;;;;;;;;;;;ACElB,SAAgBC,iBAAe,QAAQ;CAEnC,IAAI,MAAM,EAAE;CACZ,IAAI,MAAM,OAAO;AACjB,MAAK,IAAI,KAAK,GAAG,KAAK,KAAK,MAAM;EAC7B,IAAI,MAAM,OAAO;AACjB,MAAI,IACA,KAAI,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,SAAS,IAAI,IAAI;;AAG/D,QAAO;;;;;;;;eChBwC;CAS/CC,+BAA6B;CAC7BC,kBAAgB;CAChBC,6BAA2B;CAC3BC,gBAAc;CACdC,iCAA+B;CAC/BC,gBAAc;CACdC,qBAAmB;CACnBC,qBAAmB;CACnBC,+BAA6B;CAC7BC,8BAA4B;CAC5BC,+BAA6B;CAC7BC,uCAAqC;CACrCC,2BAAyB;CACzBC,iCAA+B;CAC/BC,iDAA+C;CAC/CC,oCAAkC;CAClCC,oCAAkC;CAClCC,2BAAyB;CACzBC,gCAA8B;CAC9BC,8BAA4B;CAC5BC,qBAAmB;CACnBC,uBAAqB;CACrBC,0BAAwB;CACxBC,6BAA2B;CAC3BC,0BAAwB;CACxBC,qBAAmB;CACnBC,uBAAqB;CACrBC,iCAA+B;CAC/BC,gCAA8B;CAC9BC,2BAAyB;CACzBC,2BAAyB;CACzBC,kBAAgB;CAChBC,kBAAgB;CAChBC,uBAAqB;CACrBC,0BAAwB;CACxBC,8BAA4B;CAC5BC,4BAA0B;CAC1BC,sBAAoB;CACpBC,oBAAkB;CAClBC,sBAAoB;CACpBC,sBAAoB;CACpBC,oBAAkB;CAClBC,sBAAoB;CACpBC,sBAAoB;CACpBC,iCAA+B;CAC/BC,oCAAkC;CAClCC,8BAA4B;CAC5BC,6BAA2B;CAC3BC,6BAA2B;CAC3BC,6BAA2B;CAC3BC,qBAAmB;CACnBC,mBAAiB;CACjBC,qBAAmB;CACnBC,sBAAoB;CACpBC,kBAAgB;CAChBC,oBAAkB;CAClBC,sBAAoB;CACpBC,uBAAqB;CACrBC,sBAAoB;CACpBC,oBAAkB;CAClBC,oBAAkB;CAClBC,iBAAe;CACfC,oBAAkB;CAClBC,kBAAgB;CAChBC,oBAAkB;CAClBC,yBAAuB;CACvBC,oBAAkB;CAClBC,wBAAsB;CACtBC,oCAAkC;CAClCC,iDAA+C;CAC/CC,qCAAmC;CACnCC,kDAAgD;CAChDC,yBAAuB;CACvBC,mBAAiB;CACjBC,uBAAqB;CACrBC,iCAA+B;CAC/BC,uCAAqC;CACrCC,6CAA2C;CAC3CC,+CAA6C;CAC7CC,gDAA8C;CAC9CC,qCAAmC;CACnCC,gCAA8B;CAC9BC,2BAAyB;CACzBC,uCAAqC;CACrCC,gCAA8B;CAC9BC,4BAA0B;CAC1BC,8CAA4C;CAC5CC,6CAA2C;CAC3CC,2CAAyC;CACzCC,iCAA+B;CAC/BC,kCAAgC;CAChCC,6BAA2B;CAC3BC,oCAAkC;CAClCC,2BAAyB;CACzBC,mCAAiC;CACjCC,2CAAyC;CACzCC,oDAAkD;CAClDC,yBAAuB;CACvBC,8BAA4B;CAC5BC,mCAAiC;CACjCC,mCAAiC;CACjCC,2BAAyB;CACzBC,mCAAiC;CACjCC,sBAAoB;CACpBC,6BAA2B;CAC3BC,kCAAgC;CAChCC,6CAA2C;CAC3CC,wDAAsD;CACtDC,4BAA0B;CAC1BC,8BAA4B;CAC5BC,uCAAqC;CACrCC,oCAAkC;CAClCC,uCAAqC;CACrCC,kCAAgC;CAChCC,kCAAgC;CAChCC,kCAAgC;CAChCC,mBAAiB;CACjBC,oBAAkB;CAClBC,mBAAiB;CACjBC,6BAA2B;CAC3BC,4BAA0B;CAC1BC,+BAA6B;CAC7BC,+BAA6B;CAC7BC,kCAAgC;CAChCC,qBAAmB;CACnBC,mBAAiB;CACjBC,gCAA8B;CAC9BC,kCAAgC;CAQzBC,oCAAkChI;CAMlCiI,uBAAqBhI;CAMrBiI,kCAAgChI;CAMhCiI,qBAAmBhI;CAMnBiI,sCAAoChI;CAQpCiI,qBAAmBhI;CAQnBiI,0BAAwBhI;CAQxBiI,0BAAwBhI;CAQxBiI,oCAAkChI;CAMlCiI,mCAAiChI;CAMjCiI,oCAAkChI;CAMlCiI,4CAA0ChI;CAQ1CiI,gCAA8BhI;CAM9BiI,sCAAoChI;CAMpCiI,sDAAoDhI;CAMpDiI,yCAAuChI;CAMvCiI,yCAAuChI;CAMvCiI,gCAA8BhI;CAM9BiI,qCAAmChI;CAMnCiI,mCAAiChI;CAQjCiI,0BAAwBhI;CAMxBiI,4BAA0BhI;CAM1BiI,+BAA6BhI;CAM7BiI,kCAAgChI;CAuBhCiI,+BAA6BhI;CAM7BiI,0BAAwBhI;CAMxBiI,4BAA0BhI;CAM1BiI,sCAAoChI;CAMpCiI,qCAAmChI;CAMnCiI,gCAA8BhI;CAM9BiI,gCAA8BhI;CAM9BiI,uBAAqBhI;CAMrBiI,uBAAqBhI;CAMrBiI,4BAA0BhI;CAQ1BiI,+BAA6BhI;CAQ7BiI,mCAAiChI;CAQjCiI,iCAA+BhI;CAM/BiI,2BAAyBhI;CAMzBiI,yBAAuBhI;CAMvBiI,2BAAyBhI;CAMzBiI,2BAAyBhI;CAMzBiI,yBAAuBhI;CAMvBiI,2BAAyBhI;CAMzBiI,2BAAyBhI;CAMzBiI,sCAAoChI;CAMpCiI,yCAAuChI;CAMvCiI,mCAAiChI;CAMjCiI,kCAAgChI;CAMhCiI,kCAAgChI;CAMhCiI,kCAAgChI;CAMhCiI,0BAAwBhI;CAMxBiI,wBAAsBhI;CAMtBiI,0BAAwBhI;CAMxBiI,2BAAyBhI;CAMzBiI,uBAAqBhI;CAMrBiI,yBAAuBhI;CAMvBiI,2BAAyBhI;CAMzBiI,4BAA0BhI;CAM1BiI,2BAAyBhI;CAMzBiI,yBAAuBhI;CAMvBiI,yBAAuBhI;CAQvBiI,sBAAoBhI;CAMpBiI,yBAAuBhI;CAQvBiI,uBAAqBhI;CAMrBiI,yBAAuBhI;CAMvBiI,8BAA4BhI;CAQ5BiI,yBAAuBhI;CAMvBiI,6BAA2BhI;CAM3BiI,yCAAuChI;CAMvCiI,sDAAoDhI;CAMpDiI,0CAAwChI;CAMxCiI,uDAAqDhI;CAQrDiI,8BAA4BhI;CAM5BiI,wBAAsBhI;CAkBtBiI,4BAA0BhI;CAM1BiI,sCAAoChI;CAMpCiI,4CAA0ChI;CAM1CiI,kDAAgDhI;CAMhDiI,oDAAkDhI;CAMlDiI,qDAAmDhI;CAMnDiI,0CAAwChI;CAMxCiI,qCAAmChI;CAMnCiI,gCAA8BhI;CAM9BiI,4CAA0ChI;CAM1CiI,qCAAmChI;CAMnCiI,iCAA+BhI;CAM/BiI,mDAAiDhI;CAMjDiI,kDAAgDhI;CAMhDiI,gDAA8ChI;CAM9CiI,sCAAoChI;CAMpCiI,uCAAqChI;CAMrCiI,kCAAgChI;CAMhCiI,yCAAuChI;CAMvCiI,gCAA8BhI;CAM9BiI,wCAAsChI;CAMtCiI,gDAA8ChI;CAM9CiI,yDAAuDhI;CAMvDiI,8BAA4BhI;CAM5BiI,mCAAiChI;CAMjCiI,wCAAsChI;CAMtCiI,wCAAsChI;CAMtCiI,gCAA8BhI;CAM9BiI,wCAAsChI;CAMtCiI,2BAAyBhI;CAMzBiI,kCAAgChI;CAMhCiI,uCAAqChI;CAMrCiI,kDAAgDhI;CAMhDiI,6DAA2DhI;CAM3DiI,iCAA+BhI;CAM/BiI,mCAAiChI;CAMjCiI,4CAA0ChI;CAQ1CiI,yCAAuChI;CAMvCiI,4CAA0ChI;CAM1CiI,uCAAqChI;CAMrCiI,uCAAqChI;CAMrCiI,uCAAqChI;CAMrCiI,wBAAsBhI;CAQtBiI,yBAAuBhI;CAQvBiI,wBAAsBhI;CAMtBiI,kCAAgChI;CAMhCiI,iCAA+BhI;CAM/BiI,oCAAkChI;CAMlCiI,oCAAkChI;CAMlCiI,uCAAqChI;CAMrCiI,0BAAwBhI;CAQxBiI,wBAAsBhI;CAMtBiI,qCAAmChI;CAMnCiI,uCAAqChI;CAKrCiI,uBACG,iCAAe;EACzBhQ;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACH,CAAC;CAQEkI,iCAA+B;CAC/BC,6BAA2B;CAC3BC,6BAA2B;CAC3BC,8BAA4B;CAC5BC,2BAAyB;CACzBC,kCAAgC;CAChCC,gCAA8B;CAC9BC,4BAA0B;CAC1BC,kCAAgC;CAChCC,8BAA4B;CAC5BC,gCAA8B;CAC9BC,6BAA2B;CAC3BC,8BAA4B;CAC5BC,8BAA4B;CAC5BC,gCAA8B;CAC9BC,2BAAyB;CACzBC,6BAA2B;CAC3BC,8BAA4B;CAC5BC,gCAA8B;CAC9BC,6BAA2B;CAC3BC,iCAA+B;CAC/BC,gCAA8B;CAC9BC,iCAA+B;CAC/BC,iCAA+B;CAC/BC,+BAA6B;CAC7BC,+BAA6B;CAC7BC,iCAA+B;CAC/BC,iCAA+B;CAC/BC,8BAA4B;CAC5BC,8BAA4B;CAC5BC,gCAA8B;CAC9BC,+BAA6B;CAC7BC,0BAAwB;CACxBC,kCAAgC;CAChCC,iCAA+B;CAC/BC,6BAA2B;CAC3BC,+BAA6B;CAC7BC,6BAA2B;CAC3BC,iCAA+B;CAC/BC,+BAA6B;CAC7BC,gCAA8B;CAC9BC,gCAA8B;CAC9BC,6BAA2B;CAC3BC,6BAA2B;CAC3BC,qCAAmC;CACnCC,iCAA+B;CAC/BC,mCAAiC;CAM1BC,6BAA2B/C;CAM3BgD,yBAAuB/C;CAMvBgD,yBAAuB/C;CAMvBgD,0BAAwB/C;CAMxBgD,uBAAqB/C;CAMrBgD,8BAA4B/C;CAM5BgD,4BAA0B/C;CAM1BgD,wBAAsB/C;CAMtBgD,8BAA4B/C;CAM5BgD,0BAAwB/C;CAMxBgD,4BAA0B/C;CAM1BgD,yBAAuB/C;CAMvBgD,0BAAwB/C;CAMxBgD,0BAAwB/C;CAMxBgD,4BAA0B/C;CAM1BgD,uBAAqB/C;CAMrBgD,yBAAuB/C;CAMvBgD,0BAAwB/C;CAMxBgD,4BAA0B/C;CAM1BgD,yBAAuB/C;CAMvBgD,6BAA2B/C;CAM3BgD,4BAA0B/C;CAM1BgD,6BAA2B/C;CAM3BgD,6BAA2B/C;CAM3BgD,2BAAyB/C;CAMzBgD,2BAAyB/C;CAMzBgD,6BAA2B/C;CAM3BgD,6BAA2B/C;CAM3BgD,0BAAwB/C;CAMxBgD,0BAAwB/C;CAMxBgD,4BAA0B/C;CAM1BgD,2BAAyB/C;CAMzBgD,sBAAoB/C;CAMpBgD,8BAA4B/C;CAM5BgD,6BAA2B/C;CAM3BgD,yBAAuB/C;CAMvBgD,2BAAyB/C;CAMzBgD,yBAAuB/C;CAMvBgD,6BAA2B/C;CAM3BgD,2BAAyB/C;CAMzBgD,4BAA0B/C;CAM1BgD,4BAA0B/C;CAM1BgD,yBAAuB/C;CAMvBgD,yBAAuB/C;CAMvBgD,iCAA+B/C;CAM/BgD,6BAA2B/C;CAM3BgD,+BAA6B/C;CAK7BgD,mBACG,iCAAe;EACzB9F;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACH,CAAC;CAQEiD,8CAA4C;CAC5CC,sDAAoD;CACpDC,iDAA+C;CAC/CC,uDAAqD;CACrDC,8CAA4C;CAC5CC,8CAA4C;CAC5CC,gDAA8C;CAC9CC,oDAAkD;CAClDC,8CAA4C;CAC5CC,iDAA+C;CAC/CC,uDAAqD;CAM9CC,0CAAwCX;CAMxCY,kDAAgDX;CAMhDY,6CAA2CX;CAM3CY,mDAAiDX;CAMjDY,0CAAwCX;CAMxCY,0CAAwCX;CAMxCY,4CAA0CX;CAM1CY,gDAA8CX;CAM9CY,0CAAwCX;CAMxCY,6CAA2CX;CAM3CY,mDAAiDX;CAKjDY,sCACG,iCAAe;EACzBtB;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACH,CAAC;CAQEa,qCAAmC;CACnCC,+BAA6B;CAC7BC,iCAA+B;CAC/BC,gCAA8B;CAC9BC,gCAA8B;CAMvBC,iCAA+BL;CAM/BM,2BAAyBL;CAMzBM,6BAA2BL;CAM3BM,4BAA0BL;CAM1BM,4BAA0BL;CAK1BM,sBACG,iCAAe;EACzBV;EACAC;EACAC;EACAC;EACAC;EACH,CAAC;CAQEO,2CAAyC;CACzCC,yCAAuC;CACvCC,2CAAyC;CAMlCC,uCAAqCH;CAMrCI,qCAAmCH;CAMnCI,uCAAqCH;CAKrCI,gCACG,iCAAe;EACzBN;EACAC;EACAC;EACH,CAAC;CAUEK,gDAA8C;CAC9CC,sCAAoC;CACpCC,wCAAsC;CACtCC,sCAAoC;CAQ7BC,4CAA0CJ;CAQ1CK,kCAAgCJ;CAQhCK,oCAAkCJ;CAQlCK,kCAAgCJ;CAKhCK,8BACG,iCAAe;EACzBR;EACAC;EACAC;EACAC;EACH,CAAC;CAQEM,kCAAgC;CAChCC,kCAAgC;CAChCC,8BAA4B;CAC5BC,gCAA8B;CAC9BC,gCAA8B;CAC9BC,kCAAgC;CAChCC,iCAA+B;CAMxBC,8BAA4BP;CAM5BQ,8BAA4BP;CAM5BQ,0BAAwBP;CAMxBQ,4BAA0BP;CAM1BQ,4BAA0BP;CAM1BQ,8BAA4BP;CAM5BQ,6BAA2BP;CAK3BQ,uBACG,iCAAe;EACzBd;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACH,CAAC;CAQES,yCAAuC;CACvCC,0CAAwC;CACxCC,yCAAuC;CACvCC,gDAA8C;CAC9CC,4CAA0C;CAMnCC,qCAAmCL;CAMnCM,sCAAoCL;CAMpCM,qCAAmCL;CAMnCM,4CAA0CL;CAM1CM,wCAAsCL;CAKtCM,gCACG,iCAAe;EACzBV;EACAC;EACAC;EACAC;EACAC;EACH,CAAC;CAQEO,4CAA0C;CAC1CC,4CAA0C;CAC1CC,4CAA0C;CAC1CC,4CAA0C;CAC1CC,8CAA4C;CAC5CC,8CAA4C;CAC5CC,sDAAoD;CACpDC,6CAA2C;CAC3CC,6CAA2C;CAC3CC,4CAA0C;CAC1CC,4CAA0C;CAC1CC,8CAA4C;CAC5CC,2CAAyC;CACzCC,6CAA2C;CAC3CC,6CAA2C;CAC3CC,2CAAyC;CACzCC,gDAA8C;CAC9CC,6CAA2C;CAC3CC,0CAAwC;CACxCC,6CAA2C;CAC3CC,8CAA4C;CAMrCC,wCAAsCrB;CAMtCsB,wCAAsCrB;CAMtCsB,wCAAsCrB;CAMtCsB,wCAAsCrB;CAMtCsB,0CAAwCrB;CAMxCsB,0CAAwCrB;CAMxCsB,kDAAgDrB;CAMhDsB,yCAAuCrB;CAMvCsB,yCAAuCrB;CAMvCsB,wCAAsCrB;CAMtCsB,wCAAsCrB;CAMtCsB,0CAAwCrB;CAMxCsB,uCAAqCrB;CAMrCsB,yCAAuCrB;CAMvCsB,yCAAuCrB;CAMvCsB,uCAAqCrB;CAMrCsB,4CAA0CrB;CAM1CsB,yCAAuCrB;CAMvCsB,sCAAoCrB;CAMpCsB,yCAAuCrB;CAMvCsB,0CAAwCrB;CAKxCsB,mCACG,iCAAe;EACzB1C;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACH,CAAC;CAUEuB,kCAAgC;CAChCC,kCAAgC;CAChCC,kCAAgC;CAChCC,8BAA4B;CAC5BC,8BAA4B;CAQrBC,8BAA4BL;CAQ5BM,8BAA4BL;CAQ5BM,8BAA4BL;CAQ5BM,0BAAwBL;CAQxBM,0BAAwBL;CAKxBM,qBAAmB;EAC1B,UAAUV;EACV,UAAUC;EACV,UAAUC;EACV,MAAMC;EACN,MAAMC;EACT;CAQGO,6CAA2C;CAC3CC,6CAA2C;CAMpCC,yCAAuCF;CAMvCG,yCAAuCF;CAKvCG,mCACG,iCAAe,CACzBJ,4CACAC,2CACH,CAAC;CAQEI,yCAAuC;CACvCC,yCAAuC;CAMhCC,qCAAmCF;CAMnCG,qCAAmCF;CAKnCG,6BACG,iCAAe,CACzBJ,wCACAC,uCACH,CAAC;CAQEI,mCAAiC;CACjCC,0CAAwC;CACxCC,wCAAsC;CACtCC,iDAA+C;CAC/CC,kDAAgD;CAChDC,0CAAwC;CACxCC,+CAA6C;CAC7CC,kDAAgD;CAChDC,mDAAiD;CACjDC,oDAAkD;CAClDC,wCAAsC;CACtCC,6CAA2C;CAC3CC,8CAA4C;CAC5CC,yCAAuC;CACvCC,4CAA0C;CAC1CC,0CAAwC;CACxCC,gDAA8C;CAMvCC,+BAA6BjB;CAM7BkB,sCAAoCjB;CAMpCkB,oCAAkCjB;CAMlCkB,6CAA2CjB;CAM3CkB,8CAA4CjB;CAM5CkB,sCAAoCjB;CAMpCkB,2CAAyCjB;CAMzCkB,8CAA4CjB;CAM5CkB,+CAA6CjB;CAM7CkB,gDAA8CjB;CAM9CkB,oCAAkCjB;CAMlCkB,yCAAuCjB;CAMvCkB,0CAAwCjB;CAMxCkB,qCAAmCjB;CAMnCkB,wCAAsCjB;CAMtCkB,sCAAoCjB;CAMpCkB,4CAA0CjB;CAK1CkB,4BAA0B;EACjC,IAAIlC;EACJ,WAAWC;EACX,SAASC;EACT,kBAAkBC;EAClB,mBAAmBC;EACnB,WAAWC;EACX,gBAAgBC;EAChB,mBAAmBC;EACnB,oBAAoBC;EACpB,qBAAqBC;EACrB,SAASC;EACT,cAAcC;EACd,eAAeC;EACf,UAAUC;EACV,aAAaC;EACb,WAAWC;EACX,iBAAiBC;EACpB;CAQGmB,+BAA6B;CAC7BC,mCAAiC;CAM1BC,2BAAyBF;CAMzBG,+BAA6BF;CAK7BG,sBACG,iCAAe,CACzBJ,8BACAC,iCACH,CAAC;;;;;;;;;;;;;eElzEiD;CAS/CI,uBAAqB;CACrBC,yBAAuB;CACvBC,qBAAmB;CACnBC,gCAA8B;CAC9BC,uBAAqB;CACrBC,8BAA4B;CAC5BC,4BAA0B;CAC1BC,2BAAyB;CACzBC,yBAAuB;CACvBC,4BAA0B;CAC1BC,8BAA4B;CAC5BC,4BAA0B;CAC1BC,4BAA0B;CAC1BC,2BAAyB;CACzBC,6BAA2B;CAC3BC,4BAA0B;CAC1BC,uBAAqB;CACrBC,qBAAmB;CACnBC,0BAAwB;CACxBC,6BAA2B;CAC3BC,4BAA0B;CAC1BC,+BAA6B;CAC7BC,kBAAgB;CAChBC,gCAA8B;CAC9BC,0BAAwB;CACxBC,kBAAgB;CAChBC,gBAAc;CACdC,qBAAmB;CACnBC,sBAAoB;CACpBC,wBAAsB;CACtBC,gBAAc;CACdC,kBAAgB;CAChBC,kBAAgB;CAChBC,kBAAgB;CAChBC,wBAAsB;CACtBC,sBAAoB;CACpBC,2BAAyB;CACzBC,yBAAuB;CACvBC,sBAAoB;CACpBC,qBAAmB;CACnBC,2BAAyB;CACzBC,oBAAkB;CAClBC,qBAAmB;CACnBC,2BAAyB;CACzBC,2BAAyB;CACzBC,4BAA0B;CAC1BC,2BAAyB;CACzBC,4BAA0B;CAC1BC,4BAA0B;CAC1BC,6BAA2B;CAC3BC,0BAAwB;CACxBC,2BAAyB;CACzBC,oBAAkB;CAClBC,qBAAmB;CACnBC,wBAAsB;CACtBC,yBAAuB;CACvBC,gBAAc;CACdC,uBAAqB;CACrBC,gBAAc;CACdC,mBAAiB;CACjBC,oBAAkB;CAClBC,gCAA8B;CAC9BC,gCAA8B;CAC9BC,wBAAsB;CACtBC,6BAA2B;CAC3BC,6BAA2B;CAC3BC,sBAAoB;CACpBC,6BAA2B;CAC3BC,gCAA8B;CAC9BC,oCAAkC;CAClCC,qBAAmB;CACnBC,0BAAwB;CACxBC,4BAA0B;CAC1BC,wBAAsB;CACtBC,2BAAyB;CACzBC,+BAA6B;CAC7BC,8BAA4B;CAC5BC,+BAA6B;CAC7BC,uBAAqB;CACrBC,0BAAwB;CACxBC,8BAA4B;CAMrBC,+BAA6BjF;CAM7BkF,iCAA+BjF;CAM/BkF,6BAA2BjF;CAQ3BkF,wCAAsCjF;CAQtCkF,+BAA6BjF;CAM7BkF,sCAAoCjF;CAMpCkF,oCAAkCjF;CAMlCkF,mCAAiCjF;CAMjCkF,iCAA+BjF;CAM/BkF,oCAAkCjF;CAMlCkF,sCAAoCjF;CAMpCkF,oCAAkCjF;CAQlCkF,oCAAkCjF;CAQlCkF,mCAAiCjF;CAMjCkF,qCAAmCjF;CAQnCkF,oCAAkCjF;CAMlCkF,+BAA6BjF;CAM7BkF,6BAA2BjF;CAM3BkF,kCAAgCjF;CAMhCkF,qCAAmCjF;CAMnCkF,oCAAkCjF;CAMlCkF,uCAAqCjF;CAQrCkF,0BAAwBjF;CAQxBkF,wCAAsCjF;CAQtCkF,kCAAgCjF;CAQhCkF,0BAAwBjF;CAqBxBkF,wBAAsBjF;CAgBtBkF,6BAA2BjF;CAQ3BkF,8BAA4BjF;CAQ5BkF,gCAA8BjF;CAM9BkF,wBAAsBjF;CAMtBkF,0BAAwBjF;CAMxBkF,0BAAwBjF;CAMxBkF,0BAAwBjF;CAMxBkF,gCAA8BjF;CAM9BkF,8BAA4BjF;CAM5BkF,mCAAiCjF;CAMjCkF,iCAA+BjF;CAM/BkF,8BAA4BjF;CAM5BkF,6BAA2BjF;CAM3BkF,mCAAiCjF;CAMjCkF,4BAA0BjF;CAM1BkF,6BAA2BjF;CAM3BkF,mCAAiCjF;CAMjCkF,mCAAiCjF;CAMjCkF,oCAAkCjF;CAMlCkF,mCAAiCjF;CAMjCkF,oCAAkCjF;CAMlCkF,oCAAkCjF;CAMlCkF,qCAAmCjF;CAMnCkF,kCAAgCjF;CAMhCkF,mCAAiCjF;CAMjCkF,4BAA0BjF;CAM1BkF,6BAA2BjF;CAM3BkF,gCAA8BjF;CAM9BkF,iCAA+BjF;CAM/BkF,wBAAsBjF;CAMtBkF,+BAA6BjF;CAM7BkF,wBAAsBjF;CAMtBkF,2BAAyBjF;CAMzBkF,4BAA0BjF;CAM1BkF,wCAAsCjF;CAMtCkF,wCAAsCjF;CAMtCkF,gCAA8BjF;CAM9BkF,qCAAmCjF;CAMnCkF,qCAAmCjF;CAMnCkF,8BAA4BjF;CAM5BkF,qCAAmCjF;CAMnCkF,wCAAsCjF;CAMtCkF,4CAA0CjF;CAQ1CkF,6BAA2BjF;CAQ3BkF,kCAAgCjF;CAQhCkF,oCAAkCjF;CAMlCkF,gCAA8BjF;CAM9BkF,mCAAiCjF;CAMjCkF,uCAAqCjF;CAMrCkF,sCAAoCjF;CAMpCkF,uCAAqCjF;CAMrCkF,+BAA6BjF;CAM7BkF,kCAAgCjF;CAMhCkF,sCAAoCjF;CAKpCkF,+BACG,iCAAe;EACzBlK;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACH,CAAC;CAQEmF,0CAAwC;CACxCC,gCAA8B;CAC9BC,kCAAgC;CAChCC,gCAA8B;CAMvBC,sCAAoCJ;CAMpCK,4BAA0BJ;CAM1BK,8BAA4BJ;CAM5BK,4BAA0BJ;CAK1BK,wBACG,iCAAe;EACzBR;EACAC;EACAC;EACAC;EACH,CAAC;CAUEM,8CAA4C;CAC5CC,6CAA2C;CAC3CC,oCAAkC;CAClCC,oCAAkC;CAClCC,oCAAkC;CAClCC,uCAAqC;CACrCC,kDAAgD;CAChDC,qCAAmC;CACnCC,sDAAoD;CACpDC,sCAAoC;CACpCC,4CAA0C;CAC1CC,8CAA4C;CAC5CC,+CAA6C;CAC7CC,0CAAwC;CACxCC,kDAAgD;CAChDC,gDAA8C;CAC9CC,2CAAyC;CAQlCC,0CAAwCjB;CAQxCkB,yCAAuCjB;CAQvCkB,gCAA8BjB;CAQ9BkB,gCAA8BjB;CAQ9BkB,gCAA8BjB;CAQ9BkB,mCAAiCjB;CAQjCkB,8CAA4CjB;CAQ5CkB,iCAA+BjB;CAQ/BkB,kDAAgDjB;CAQhDkB,kCAAgCjB;CAQhCkB,wCAAsCjB;CAQtCkB,0CAAwCjB;CAQxCkB,2CAAyCjB;CAQzCkB,sCAAoCjB;CAQpCkB,8CAA4CjB;CAQ5CkB,4CAA0CjB;CAQ1CkB,uCAAqCjB;CAKrCkB,wBACG,iCAAe;EACzBlC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACH,CAAC;CAQEmB,mCAAiC;CACjCC,uCAAqC;CAM9BC,+BAA6BF;CAM7BG,mCAAiCF;CAKjCG,2BACG,iCAAe,CACzBJ,kCACAC,qCACH,CAAC;CAQEI,6BAA2B;CAC3BC,6BAA2B;CAC3BC,6BAA2B;CAC3BC,4BAA0B;CAC1BC,6BAA2B;CAC3BC,6BAA2B;CAC3BC,2BAAyB;CAMlBC,yBAAuBP;CAMvBQ,yBAAuBP;CAMvBQ,yBAAuBP;CAMvBQ,wBAAsBP;CAMtBQ,yBAAuBP;CAMvBQ,yBAAuBP;CAMvBQ,uBAAqBP;CAKrBQ,mBACG,iCAAe;EACzBd;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACH,CAAC;CAQES,6BAA2B;CAC3BC,2BAAyB;CACzBC,4BAA0B;CAC1BC,6BAA2B;CAC3BC,4BAA0B;CAC1BC,6BAA2B;CAC3BC,kCAAgC;CAChCC,0BAAwB;CACxBC,yBAAuB;CACvBC,6BAA2B;CAC3BC,0BAAwB;CAMjBC,yBAAuBX;CAMvBY,uBAAqBX;CAMrBY,wBAAsBX;CAMtBY,yBAAuBX;CAMvBY,wBAAsBX;CAMtBY,yBAAuBX;CAMvBY,8BAA4BX;CAM5BY,sBAAoBX;CAMpBY,qBAAmBX;CAMnBY,yBAAuBX;CAMvBY,sBAAoBX;CAKpBY,iBACG,iCAAe;EACzBtB;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACH,CAAC;CAQEa,uCAAqC;CACrCC,0CAAwC;CACxCC,0CAAwC;CACxCC,sCAAoC;CACpCC,wCAAsC;CACtCC,0CAAwC;CACxCC,uCAAqC;CACrCC,0CAAwC;CACxCC,wCAAsC;CACtCC,yCAAuC;CAMhCC,mCAAiCV;CAMjCW,sCAAoCV;CAMpCW,sCAAoCV;CAMpCW,kCAAgCV;CAMhCW,oCAAkCV;CAMlCW,sCAAoCV;CAMpCW,mCAAiCV;CAMjCW,sCAAoCV;CAMpCW,oCAAkCV;CAMlCW,qCAAmCV;CAKnCW,+BACG,iCAAe;EACzBpB;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACH,CAAC;;;;;;;;;;;;;CEntCSY,yCAAuC;CAIvCC,mDAAiD;CAIjDC,2DAAyD;CAIzDC,yDAAuD;CAIvDC,2DAAyD;CAIzDC,gCAA8B;CAI9BC,qCAAmC;CAInCC,wCAAsC;CAItCC,wCAAsC;CAItCC,oCAAkC;CAIlCC,sCAAoC;CAIpCC,wCAAsC;CAItCC,qCAAmC;CAInCC,wCAAsC;CAItCC,sCAAoC;CAIpCC,sCAAoC;CAIpCC,uCAAqC;CAIrCC,uCAAqC;CAarCC,4BAA0B;CAM1BC,+BAA6B;CAM7BC,6CAA2C;CAO3CC,iDAA+C;CAI/CC,0DAAwD;CAIxDC,0DAAwD;CAIxDC,0DAAwD;CAIxDC,4DAA0D;CAQ1DC,yCAAuC;CAMvCC,yCAAuC;CAMvCC,wCAAsC;CAOtCC,yCAAuC;CAIvCC,kDAAgD;CAIhDC,kDAAgD;CAUhDC,wBAAsB;CAQtBC,qBAAmB;CA6BnBC,oBAAkB;CAIlBC,2BAAyB;CAqBzBC,2BAAyB;CAOzBC,2BAAyB;CAMzBC,8BAA4B;CAO5BC,wBAAsB;CAWtBC,6BAA2B,SAAU,KAAK;AAAE,SAAO,yBAAyB;;CAuB5EC,6BAA2B;CAI3BC,oCAAkC;CAIlCC,sCAAoC;CAIpCC,qCAAmC;CAInCC,kCAAgC;CAIhCC,mCAAiC;CAIjCC,sCAAoC;CAIpCC,oCAAkC;CAIlCC,mCAAiC;CAIjCC,kCAAgC;CAIhCC,oCAAkC;CAQlCC,sCAAoC;CAQpCC,mCAAiC;CAWjCC,8BAA4B,SAAU,KAAK;AAAE,SAAO,0BAA0B;;CAM9EC,mCAAiC;CAUjCC,oBAAkB;CASlBC,uBAAqB;CASrBC,qBAAmB;CAUnBC,8BAA4B;CAO5BC,yBAAuB;CAIvBC,+BAA6B;CAI7BC,mCAAiC;CAIjCC,2BAAyB;CAOzBC,0BAAwB;CAIxBC,mCAAiC;CAIjCC,+BAA6B;CAI7BC,oCAAkC;CAIlCC,sCAAoC;CAIpCC,yCAAuC;CAIvCC,mCAAiC;CAOjCC,+BAA6B;CAM7BC,4BAA0B;CAO1BC,8BAA4B;CAM5BC,2BAAyB;CAUzBC,+BAA6B;CAS7BC,kCAAgC;CAahCC,2BAAyB;CAIzBC,iCAA+B;CAI/BC,iCAA+B;CAI/BC,gCAA8B;CAI9BC,gCAA8B;CAI9BC,iCAA+B;CAS/BC,sBAAoB;CAIpBC,4BAA0B;CAI1BC,4BAA0B;CAM1BC,yBAAuB;CAMvBC,4BAA0B;CAI1BC,0BAAwB;CAIxBC,iCAA+B;CAI/BC,8BAA4B;CAM5BC,iCAA+B;CAU/BC,wBAAsB;CAUtBC,qBAAmB;CAQnBC,sBAAoB;CAOpBC,yBAAuB;CAOvBC,mCAAiC;CAIjCC,iDAA+C;CAI/CC,mDAAiD;CAIjDC,4CAA0C;CAO1CC,2BAAyB;CAIzBC,yCAAuC;CAIvCC,+CAA6C;CAI7CC,wCAAsC;CAMtCC,sBAAoB;CAWpBC,kBAAgB;CAQhBC,kBAAgB;CAQhBC,mBAAiB;CAQjBC,oBAAkB;CAQlBC,6BAA2B;;;;;;;CC9qB3BC,6CAA2C;CAM3CC,0DAAwD;CAMxDC,oDAAkD;CAMlDC,0DAAwD;CAMxDC,2DAAyD;CAWzDC,6CAA2C;CAM3CC,6CAA2C;CAI3CC,wCAAsC;CAItCC,wCAAsC;CAItCC,2BAAyB;CAIzBC,4BAA0B;CAI1BC,8BAA4B;CAI5BC,yBAAuB;CAMvBC,sCAAoC;CAIpCC,wBAAsB;CAItBC,2BAAyB;CAIzBC,gCAA8B;CAI9BC,4BAA0B;CAI1BC,2BAAyB;CAIzBC,yCAAuC;CAIvCC,4BAA0B;CAM1BC,sCAAoC;CAMpCC,yCAAuC;CAMvCC,uCAAqC;CAMrCC,sCAAoC;CAMpCC,mCAAiC;CAOjCC,wCAAsC;CAMtCC,0CAAwC;CAQxCC,wCAAsC;CAMtCC,6CAA2C;CAM3CC,8CAA4C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AEzKvD,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,WAAW,KAAK;CACxB,MAAMC;CACN,MAAMC;;AAEN,SAAQ,WAAW;GACdA,yBAAuB,iCAAiC;GACxDA,yBAAuB,mCAAmC;GAC1DA,yBAAuB,qCAAqCA,yBAAuB;GACnFA,yBAAuB,oCAAoCD,YAAU;EACzE;;;;;;ACzBD,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,aAAa,KAAK;CAgB1B,SAAS,WAAW,OAAO;AACvB,QAAM,OAAO;;AAEjB,SAAQ,aAAa;;;;;;ACLrB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,aAAa,QAAQ,WAAW,QAAQ,gBAAgB,QAAQ,oBAAoB,QAAQ,cAAc,QAAQ,cAAc,QAAQ,SAAS,QAAQ,wBAAwB,KAAK;CAC9L,IAAIE;AACJ,QAAO,eAAe,SAAS,yBAAyB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,gBAAc;;EAA0B,CAAC;AAC/I,QAAO,eAAe,SAAS,UAAU;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,gBAAc;;EAAW,CAAC;CACjH,IAAI;AACJ,QAAO,eAAe,SAAS,eAAe;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,aAAa;;EAAgB,CAAC;CAC1H,IAAI;AACJ,QAAO,eAAe,SAAS,eAAe;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,gBAAgB;;EAAgB,CAAC;CAC7H,IAAIC;AACJ,QAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,sBAAoB;;EAAsB,CAAC;CAC7I,IAAI;AACJ,QAAO,eAAe,SAAS,iBAAiB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,cAAc;;EAAkB,CAAC;CAC/H,IAAI;AACJ,QAAO,eAAe,SAAS,YAAY;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,WAAW;;EAAa,CAAC;CAClH,IAAI;AACJ,QAAO,eAAe,SAAS,cAAc;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,aAAa;;EAAe,CAAC;;;;;;AC/BxH,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,aAAa,QAAQ,gBAAgB,QAAQ,cAAc,QAAQ,wBAAwB,QAAQ,SAAS,QAAQ,cAAc,QAAQ,WAAW,QAAQ,oBAAoB,KAAK;CAgB9L,IAAIC;AACJ,QAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,SAAO;;EAAsB,CAAC;AAChI,QAAO,eAAe,SAAS,YAAY;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,SAAO;;EAAa,CAAC;AAC9G,QAAO,eAAe,SAAS,eAAe;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,SAAO;;EAAgB,CAAC;AACpH,QAAO,eAAe,SAAS,UAAU;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,SAAO;;EAAW,CAAC;AAC1G,QAAO,eAAe,SAAS,yBAAyB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,SAAO;;EAA0B,CAAC;AACxI,QAAO,eAAe,SAAS,eAAe;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,SAAO;;EAAgB,CAAC;AACpH,QAAO,eAAe,SAAS,iBAAiB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,SAAO;;EAAkB,CAAC;AACxH,QAAO,eAAe,SAAS,cAAc;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,SAAO;;EAAe,CAAC;;;;;;ACVlH,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,aAAa,QAAQ,cAAc,QAAQ,oBAAoB,QAAQ,uBAAuB,QAAQ,uBAAuB,QAAQ,sBAAsB,QAAQ,oBAAoB,QAAQ,iBAAiB,QAAQ,oBAAoB,QAAQ,SAAS,QAAQ,gBAAgB,QAAQ,iBAAiB,KAAK;CAC3T,MAAMC;CACN,MAAM,oBAAoB;CAE1B,MAAM,8BAA8B,KAAK,IAAI,IADT,EACyC;CAC7E,MAAM,wBAAwB,KAAK,IAAI,IAAI,kBAAkB;;;;;CAK7D,SAAS,eAAe,aAAa;EACjC,MAAM,eAAe,cAAc;AAKnC,SAAO,CAHS,KAAK,MAAM,aAAa,EAE1B,KAAK,MAAO,cAAc,MAAQ,4BAA4B,CACrD;;AAE3B,SAAQ,iBAAiB;CACzB,SAAS,gBAAgB;EACrB,IAAI,aAAaA,aAAW,cAAc;AAC1C,MAAI,OAAO,eAAe,UAAU;GAChC,MAAM,OAAOA,aAAW;AACxB,gBAAa,KAAK,UAAU,KAAK,OAAO;;AAE5C,SAAO;;AAEX,SAAQ,gBAAgB;;;;;CAKxB,SAAS,OAAO,gBAAgB;AAG5B,SAAO,WAFY,eAAe,eAAe,CAAC,EACtC,eAAe,OAAO,mBAAmB,WAAW,iBAAiBA,aAAW,cAAc,KAAK,CAAC,CAC9E;;AAEtC,SAAQ,SAAS;;;;;;CAMjB,SAAS,kBAAkB,MAAM;AAE7B,MAAI,kBAAkB,KAAK,CACvB,QAAO;WAEF,OAAO,SAAS,SAErB,KAAI,OAAO,eAAe,CACtB,QAAO,OAAO,KAAK;MAInB,QAAO,eAAe,KAAK;WAG1B,gBAAgB,KACrB,QAAO,eAAe,KAAK,SAAS,CAAC;MAGrC,OAAM,UAAU,qBAAqB;;AAG7C,SAAQ,oBAAoB;;;;;;CAM5B,SAAS,eAAe,WAAW,SAAS;EACxC,IAAI,UAAU,QAAQ,KAAK,UAAU;EACrC,IAAI,QAAQ,QAAQ,KAAK,UAAU;AAEnC,MAAI,QAAQ,GAAG;AACX,cAAW;AAEX,YAAS;;AAEb,SAAO,CAAC,SAAS,MAAM;;AAE3B,SAAQ,iBAAiB;;;;;CAKzB,SAAS,kBAAkB,MAAM;EAC7B,MAAM,YAAY;EAClB,MAAM,MAAM,GAAG,IAAI,OAAO,UAAU,GAAG,KAAK,GAAG;EAC/C,MAAM,aAAa,IAAI,UAAU,IAAI,SAAS,YAAY,EAAE;AAE5D,0BADa,IAAI,KAAK,KAAK,KAAK,IAAK,EAAC,aAAa,CACvC,QAAQ,QAAQ,WAAW;;AAE3C,SAAQ,oBAAoB;;;;;CAK5B,SAAS,oBAAoB,MAAM;AAC/B,SAAO,KAAK,KAAK,wBAAwB,KAAK;;AAElD,SAAQ,sBAAsB;;;;;CAK9B,SAAS,qBAAqB,MAAM;AAChC,SAAO,KAAK,KAAK,MAAM,KAAK,KAAK;;AAErC,SAAQ,uBAAuB;;;;;CAK/B,SAAS,qBAAqB,MAAM;AAChC,SAAO,KAAK,KAAK,MAAM,KAAK,KAAK;;AAErC,SAAQ,uBAAuB;;;;;CAK/B,SAAS,kBAAkB,OAAO;AAC9B,SAAQ,MAAM,QAAQ,MAAM,IACxB,MAAM,WAAW,KACjB,OAAO,MAAM,OAAO,YACpB,OAAO,MAAM,OAAO;;AAE5B,SAAQ,oBAAoB;;;;;CAK5B,SAAS,YAAY,OAAO;AACxB,SAAQ,kBAAkB,MAAM,IAC5B,OAAO,UAAU,YACjB,iBAAiB;;AAEzB,SAAQ,cAAc;;;;CAItB,SAAS,WAAW,OAAO,OAAO;EAC9B,MAAM,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,GAAG;AAEtD,MAAI,IAAI,MAAM,uBAAuB;AACjC,OAAI,MAAM;AACV,OAAI,MAAM;;AAEd,SAAO;;AAEX,SAAQ,aAAa;;;;;;ACzJrB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,mBAAmB,KAAK;AAEhC,EAAC,SAAU,oBAAkB;AACzB,qBAAiB,mBAAiB,aAAa,KAAK;AACpD,qBAAiB,mBAAiB,YAAY,KAAK;IACjC,QAAQ,qBAAqB,QAAQ,mBAAmB,EAAE,EAAE;;;;;;ACNlF,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,sBAAsB,KAAK;CACnC,MAAMC;;CAEN,IAAM,sBAAN,MAA0B;;;;;;EAMtB,YAAY,SAAS,EAAE,EAAE;GACrB,IAAI;AACJ,QAAK,gBAAgB,KAAK,OAAO,iBAAiB,QAAQ,OAAO,KAAK,IAAI,KAAK,EAAE;AACjF,QAAK,UAAU,MAAM,KAAK,IAAI,IAAI,KAAK,aAElC,KAAI,MAAM,OAAO,EAAE,WAAW,aAAa,EAAE,QAAQ,GAAG,EAAE,CAAE,CAC5D,QAAQ,GAAG,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;;;;;;;;;;;EAW5C,OAAO,WAAS,SAAS,QAAQ;AAC7B,QAAK,MAAM,cAAc,KAAK,aAC1B,KAAI;AACA,eAAW,OAAOC,WAAS,SAAS,OAAO;YAExC,KAAK;AACR,aAAM,KAAK,KAAK,yBAAyB,WAAW,YAAY,KAAK,SAAS,IAAI,UAAU;;;;;;;;;;;;EAaxG,QAAQ,WAAS,SAAS,QAAQ;AAC9B,UAAO,KAAK,aAAa,QAAQ,KAAK,eAAe;AACjD,QAAI;AACA,YAAO,WAAW,QAAQ,KAAK,SAAS,OAAO;aAE5C,KAAK;AACR,cAAM,KAAK,KAAK,0BAA0B,WAAW,YAAY,KAAK,SAAS,IAAI,UAAU;;AAEjG,WAAO;MACRA,UAAQ;;EAEf,SAAS;AAEL,UAAO,KAAK,QAAQ,OAAO;;;AAGnC,SAAQ,sBAAsB;;;;;;AC9D9B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,gBAAgB,QAAQ,cAAc,KAAK;CACnD,MAAM,uBAAuB;CAC7B,MAAM,YAAY,QAAQ,qBAAqB;CAC/C,MAAM,mBAAmB,WAAW,qBAAqB,eAAe,qBAAqB;CAC7F,MAAM,kCAAkB,IAAI,OAAO,OAAO,UAAU,GAAG,iBAAiB,IAAI;CAC5E,MAAM,yBAAyB;CAC/B,MAAM,kCAAkC;;;;;;;;;CASxC,SAAS,YAAY,KAAK;AACtB,SAAO,gBAAgB,KAAK,IAAI;;AAEpC,SAAQ,cAAc;;;;;CAKtB,SAAS,cAAc,OAAO;AAC1B,SAAQ,uBAAuB,KAAK,MAAM,IACtC,CAAC,gCAAgC,KAAK,MAAM;;AAEpD,SAAQ,gBAAgB;;;;;;AC5BxB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,aAAa,KAAK;CAC1B,MAAM;CACN,MAAM,wBAAwB;CAC9B,MAAM,sBAAsB;CAC5B,MAAM,yBAAyB;CAC/B,MAAM,iCAAiC;;;;;;;;;;CAUvC,IAAM,aAAN,MAAM,WAAW;EACb,YAAY,eAAe;AACvB,QAAK,iCAAiB,IAAI,KAAK;AAC/B,OAAI,cACA,MAAK,OAAO,cAAc;;EAElC,IAAI,KAAK,OAAO;GAGZ,MAAM,aAAa,KAAK,QAAQ;AAChC,OAAI,WAAW,eAAe,IAAI,IAAI,CAClC,YAAW,eAAe,OAAO,IAAI;AAEzC,cAAW,eAAe,IAAI,KAAK,MAAM;AACzC,UAAO;;EAEX,MAAM,KAAK;GACP,MAAM,aAAa,KAAK,QAAQ;AAChC,cAAW,eAAe,OAAO,IAAI;AACrC,UAAO;;EAEX,IAAI,KAAK;AACL,UAAO,KAAK,eAAe,IAAI,IAAI;;EAEvC,YAAY;AACR,UAAO,KAAK,OAAO,CACd,QAAQ,KAAK,QAAQ;AACtB,QAAI,KAAK,MAAM,iCAAiC,KAAK,IAAI,IAAI,CAAC;AAC9D,WAAO;MACR,EAAE,CAAC,CACD,KAAK,uBAAuB;;EAErC,OAAO,eAAe;AAClB,OAAI,cAAc,SAAS,oBACvB;AACJ,QAAK,iBAAiB,cACjB,MAAM,uBAAuB,CAC7B,SAAS,CACT,QAAQ,KAAK,SAAS;IACvB,MAAM,aAAa,KAAK,MAAM;IAC9B,MAAM,IAAI,WAAW,QAAQ,+BAA+B;AAC5D,QAAI,MAAM,IAAI;KACV,MAAM,MAAM,WAAW,MAAM,GAAG,EAAE;KAClC,MAAM,QAAQ,WAAW,MAAM,IAAI,GAAG,KAAK,OAAO;AAClD,UAAK,GAAG,aAAa,aAAa,IAAI,KAAK,GAAG,aAAa,eAAe,MAAM,CAC5E,KAAI,IAAI,KAAK,MAAM;;AAM3B,WAAO;sBACR,IAAI,KAAK,CAAC;AAEb,OAAI,KAAK,eAAe,OAAO,sBAC3B,MAAK,iBAAiB,IAAI,IAAI,MAAM,KAAK,KAAK,eAAe,SAAS,CAAC,CAClE,SAAS,CACT,MAAM,GAAG,sBAAsB,CAAC;;EAG7C,QAAQ;AACJ,UAAO,MAAM,KAAK,KAAK,eAAe,MAAM,CAAC,CAAC,SAAS;;EAE3D,SAAS;GACL,MAAM,aAAa,IAAI,YAAY;AACnC,cAAW,iBAAiB,IAAI,IAAI,KAAK,eAAe;AACxD,UAAO;;;AAGf,SAAQ,aAAa;;;;;;ACrFrB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,4BAA4B,QAAQ,mBAAmB,QAAQ,qBAAqB,QAAQ,sBAAsB,KAAK;CAC/H,MAAMC;CACN,MAAMC;CACN,MAAMC;AACN,SAAQ,sBAAsB;AAC9B,SAAQ,qBAAqB;CAC7B,MAAM,UAAU;CAKhB,MAAM,qCAAqB,IAAI,OAAO,wGAA2F;;;;;;;;;;;CAWjI,SAAS,iBAAiB,aAAa;EACnC,MAAM,QAAQ,mBAAmB,KAAK,YAAY;AAClD,MAAI,CAAC,MACD,QAAO;AAIX,MAAI,MAAM,OAAO,QAAQ,MAAM,GAC3B,QAAO;AACX,SAAO;GACH,SAAS,MAAM;GACf,QAAQ,MAAM;GACd,YAAY,SAAS,MAAM,IAAI,GAAG;GACrC;;AAEL,SAAQ,mBAAmB;;;;;;;CAO3B,IAAM,4BAAN,MAAgC;EAC5B,OAAO,WAAS,SAAS,QAAQ;GAC7B,MAAM,cAAcF,SAAM,MAAM,eAAeG,UAAQ;AACvD,OAAI,CAAC,gBACA,GAAGF,qBAAmB,qBAAqBE,UAAQ,IACpD,EAAE,GAAGH,SAAM,oBAAoB,YAAY,CAC3C;GACJ,MAAM,cAAc,GAAG,QAAQ,GAAG,YAAY,QAAQ,GAAG,YAAY,OAAO,IAAI,OAAO,YAAY,cAAcA,SAAM,WAAW,KAAK,CAAC,SAAS,GAAG;AACpJ,UAAO,IAAI,SAAS,QAAQ,qBAAqB,YAAY;AAC7D,OAAI,YAAY,WACZ,QAAO,IAAI,SAAS,QAAQ,oBAAoB,YAAY,WAAW,WAAW,CAAC;;EAG3F,QAAQ,WAAS,SAAS,QAAQ;GAC9B,MAAM,oBAAoB,OAAO,IAAI,SAAS,QAAQ,oBAAoB;AAC1E,OAAI,CAAC,kBACD,QAAOG;GACX,MAAM,cAAc,MAAM,QAAQ,kBAAkB,GAC9C,kBAAkB,KAClB;AACN,OAAI,OAAO,gBAAgB,SACvB,QAAOA;GACX,MAAM,cAAc,iBAAiB,YAAY;AACjD,OAAI,CAAC,YACD,QAAOA;AACX,eAAY,WAAW;GACvB,MAAM,mBAAmB,OAAO,IAAI,SAAS,QAAQ,mBAAmB;AACxE,OAAI,kBAAkB;IAGlB,MAAM,QAAQ,MAAM,QAAQ,iBAAiB,GACvC,iBAAiB,KAAK,IAAI,GAC1B;AACN,gBAAY,aAAa,IAAID,eAAa,WAAW,OAAO,UAAU,WAAW,QAAQ,OAAU;;AAEvG,UAAOF,SAAM,MAAM,eAAeG,WAAS,YAAY;;EAE3D,SAAS;AACL,UAAO,CAAC,QAAQ,qBAAqB,QAAQ,mBAAmB;;;AAGxE,SAAQ,4BAA4B;;;;;;ACtFpC,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,iBAAiB,QAAQ,oBAAoB,QAAQ,iBAAiB,QAAQ,UAAU,KAAK;CAErG,MAAM,oBAAoB,mBAAS,kBAAkB,6CAA6C;AAElG,EAAC,SAAU,SAAS;AAChB,UAAQ,UAAU;IACT,QAAQ,YAAY,QAAQ,UAAU,EAAE,EAAE;CACvD,SAAS,eAAe,WAAS,MAAM;AACnC,SAAOC,UAAQ,SAAS,kBAAkB,KAAK;;AAEnD,SAAQ,iBAAiB;CACzB,SAAS,kBAAkB,WAAS;AAChC,SAAOA,UAAQ,YAAY,iBAAiB;;AAEhD,SAAQ,oBAAoB;CAC5B,SAAS,eAAe,WAAS;AAC7B,SAAOA,UAAQ,SAAS,iBAAiB;;AAE7C,SAAQ,iBAAiB;;;;;;ACnBzB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,mBAAmB,KAAK;CAChC,MAAMC;;;;;CAKN,IAAMC,qBAAN,MAAuB;EACnB,eAAe;AACX,UAAO,EACH,UAAUD,SAAM,iBAAiB,YACpC;;EAEL,WAAW;AACP,UAAO;;;AAGf,SAAQ,mBAAmBC;;;;;;ACjB3B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,kBAAkB,KAAK;CAC/B,MAAMC;;;;;CAKN,IAAMC,oBAAN,MAAsB;EAClB,eAAe;AACX,UAAO,EACH,UAAUD,SAAM,iBAAiB,oBACpC;;EAEL,WAAW;AACP,UAAO;;;AAGf,SAAQ,kBAAkBC;;;;;;ACjB1B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,qBAAqB,KAAK;CAClC,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;;;;;;CAMN,IAAMC,uBAAN,MAAyB;EACrB,YAAY,QAAQ;GAChB,IAAI,IAAI,IAAI,IAAI;AAChB,QAAK,QAAQ,OAAO;AACpB,OAAI,CAAC,KAAK,OAAO;AACb,KAAC,GAAGH,yBAAuB,oCAAoB,IAAI,MAAM,yDAAyD,CAAC;AACnH,SAAK,QAAQ,IAAIE,oBAAkB,iBAAiB;;AAExD,QAAK,wBACA,KAAK,OAAO,yBAAyB,QAAQ,OAAO,KAAK,IAAI,KAAK,IAAIA,oBAAkB,iBAAiB;AAC9G,QAAK,2BACA,KAAK,OAAO,4BAA4B,QAAQ,OAAO,KAAK,IAAI,KAAK,IAAID,qBAAmB,kBAAkB;AACnH,QAAK,uBACA,KAAK,OAAO,wBAAwB,QAAQ,OAAO,KAAK,IAAI,KAAK,IAAIC,oBAAkB,iBAAiB;AAC7G,QAAK,0BACA,KAAK,OAAO,2BAA2B,QAAQ,OAAO,KAAK,IAAI,KAAK,IAAID,qBAAmB,kBAAkB;;EAEtH,aAAa,WAAS,SAAS,UAAU,UAAU,YAAY,OAAO;GAClE,MAAM,gBAAgBF,SAAM,MAAM,eAAeK,UAAQ;AACzD,OAAI,CAAC,iBAAiB,EAAE,GAAGL,SAAM,oBAAoB,cAAc,CAC/D,QAAO,KAAK,MAAM,aAAaK,WAAS,SAAS,UAAU,UAAU,YAAY,MAAM;AAE3F,OAAI,cAAc,UAAU;AACxB,QAAI,cAAc,aAAaL,SAAM,WAAW,QAC5C,QAAO,KAAK,qBAAqB,aAAaK,WAAS,SAAS,UAAU,UAAU,YAAY,MAAM;AAE1G,WAAO,KAAK,wBAAwB,aAAaA,WAAS,SAAS,UAAU,UAAU,YAAY,MAAM;;AAE7G,OAAI,cAAc,aAAaL,SAAM,WAAW,QAC5C,QAAO,KAAK,oBAAoB,aAAaK,WAAS,SAAS,UAAU,UAAU,YAAY,MAAM;AAEzG,UAAO,KAAK,uBAAuB,aAAaA,WAAS,SAAS,UAAU,UAAU,YAAY,MAAM;;EAE5G,WAAW;AACP,UAAO,oBAAoB,KAAK,MAAM,UAAU,CAAC,wBAAwB,KAAK,qBAAqB,UAAU,CAAC,2BAA2B,KAAK,wBAAwB,UAAU,CAAC,uBAAuB,KAAK,oBAAoB,UAAU,CAAC,0BAA0B,KAAK,uBAAuB,UAAU,CAAC;;;AAGrT,SAAQ,qBAAqBD;;;;;;AChD7B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,2BAA2B,KAAK;CACxC,MAAME;;;;;CAKN,IAAMC,6BAAN,MAA+B;EAC3B,YAAY,SAAS,GAAG;AACpB,QAAK,SAAS;AACd,QAAK,SAAS,KAAK,WAAW,OAAO;AACrC,QAAK,cAAc,KAAK,MAAM,KAAK,SAAS,WAAW;;EAE3D,aAAa,WAAS,SAAS;AAC3B,UAAO,EACH,WAAW,GAAGD,SAAM,gBAAgB,QAAQ,IAAI,KAAK,YAAY,QAAQ,GAAG,KAAK,cAC3EA,SAAM,iBAAiB,qBACvBA,SAAM,iBAAiB,YAChC;;EAEL,WAAW;AACP,UAAO,qBAAqB,KAAK,OAAO;;EAE5C,WAAW,OAAO;AACd,OAAI,OAAO,UAAU,YAAY,MAAM,MAAM,CACzC,QAAO;AACX,UAAO,SAAS,IAAI,IAAI,SAAS,IAAI,IAAI;;EAE7C,YAAY,SAAS;GACjB,IAAI,eAAe;AACnB,QAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,SAAS,GAAG,KAAK;IACzC,MAAM,MAAM,IAAI;IAChB,MAAM,OAAO,SAAS,QAAQ,MAAM,KAAK,MAAM,EAAE,EAAE,GAAG;AACtD,oBAAgB,eAAe,UAAU;;AAE7C,UAAO;;;AAGf,SAAQ,2BAA2BC;;;;;;ACtCnC,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,gBAAgB,KAAK;;;;;CAM7B,MAAM,YAAY;CAClB,MAAM,UAAU;CAChB,MAAM,eAAe;CAErB,MAAM,eADY,SAAS,UACI;CAC/B,MAAM,mBAAmB,aAAa,KAAK,OAAO;CAClD,MAAM,eAAe,QAAQ,OAAO,gBAAgB,OAAO;CAC3D,MAAM,cAAc,OAAO;CAC3B,MAAM,iBAAiB,YAAY;CACnC,MAAM,iBAAiB,SAAS,OAAO,cAAc;CACrD,MAAM,uBAAuB,YAAY;;;;;;;;;CASzC,SAAS,QAAQ,MAAM,WAAW;AAC9B,SAAO,SAAU,KAAK;AAClB,UAAO,KAAK,UAAU,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BnC,SAAS,cAAc,OAAO;AAC1B,MAAI,CAAC,aAAa,MAAM,IAAI,WAAW,MAAM,KAAK,UAC9C,QAAO;EAEX,MAAM,QAAQ,aAAa,MAAM;AACjC,MAAI,UAAU,KACV,QAAO;EAEX,MAAM,OAAO,eAAe,KAAK,OAAO,cAAc,IAAI,MAAM;AAChE,SAAQ,OAAO,QAAQ,cACnB,gBAAgB,QAChB,aAAa,KAAK,KAAK,KAAK;;AAEpC,SAAQ,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;CAyBxB,SAAS,aAAa,OAAO;AACzB,SAAO,SAAS,QAAQ,OAAO,SAAS;;;;;;;;;CAS5C,SAAS,WAAW,OAAO;AACvB,MAAI,SAAS,KACT,QAAO,UAAU,SAAY,eAAe;AAEhD,SAAO,kBAAkB,kBAAkB,OAAO,MAAM,GAClD,UAAU,MAAM,GAChB,eAAe,MAAM;;;;;;;;;CAS/B,SAAS,UAAU,OAAO;EACtB,MAAM,QAAQ,eAAe,KAAK,OAAO,eAAe,EAAE,MAAM,MAAM;EACtE,IAAI,WAAW;AACf,MAAI;AACA,SAAM,kBAAkB;AACxB,cAAW;WAER,GAAG;EAGV,MAAM,SAAS,qBAAqB,KAAK,MAAM;AAC/C,MAAI,SACA,KAAI,MACA,OAAM,kBAAkB;MAGxB,QAAO,MAAM;AAGrB,SAAO;;;;;;;;;CASX,SAAS,eAAe,OAAO;AAC3B,SAAO,qBAAqB,KAAK,MAAM;;;;;;;ACvJ3C,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,QAAQ,KAAK;CAErB,MAAM;CACN,MAAM,YAAY;;;;;CAKlB,SAAS,MAAM,GAAG,MAAM;EACpB,IAAI,SAAS,KAAK,OAAO;EACzB,MAAM,0BAAU,IAAI,SAAS;AAC7B,SAAO,KAAK,SAAS,EACjB,UAAS,gBAAgB,QAAQ,KAAK,OAAO,EAAE,GAAG,QAAQ;AAE9D,SAAO;;AAEX,SAAQ,QAAQ;CAChB,SAAS,UAAU,OAAO;AACtB,MAAI,QAAQ,MAAM,CACd,QAAO,MAAM,OAAO;AAExB,SAAO;;;;;;;;;;CAUX,SAAS,gBAAgB,KAAK,KAAK,QAAQ,GAAG,SAAS;EACnD,IAAI;AACJ,MAAI,QAAQ,UACR;AAEJ;AACA,MAAI,YAAY,IAAI,IAAI,YAAY,IAAI,IAAI,WAAW,IAAI,CACvD,UAAS,UAAU,IAAI;WAElB,QAAQ,IAAI,EAAE;AACnB,YAAS,IAAI,OAAO;AACpB,OAAI,QAAQ,IAAI,CACZ,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,IAAI,GAAG,IACnC,QAAO,KAAK,UAAU,IAAI,GAAG,CAAC;YAG7B,SAAS,IAAI,EAAE;IACpB,MAAM,OAAO,OAAO,KAAK,IAAI;AAC7B,SAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,KAAK;KACzC,MAAM,MAAM,KAAK;AACjB,YAAO,OAAO,UAAU,IAAI,KAAK;;;aAIpC,SAAS,IAAI,CAClB,KAAI,SAAS,IAAI,EAAE;AACf,OAAI,CAAC,YAAY,KAAK,IAAI,CACtB,QAAO;AAEX,YAAS,OAAO,OAAO,EAAE,EAAE,IAAI;GAC/B,MAAM,OAAO,OAAO,KAAK,IAAI;AAC7B,QAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,KAAK;IACzC,MAAM,MAAM,KAAK;IACjB,MAAM,WAAW,IAAI;AACrB,QAAI,YAAY,SAAS,CACrB,KAAI,OAAO,aAAa,YACpB,QAAO,OAAO;QAId,QAAO,OAAO;SAGjB;KACD,MAAM,OAAO,OAAO;KACpB,MAAM,OAAO;AACb,SAAI,oBAAoB,KAAK,KAAK,QAAQ,IACtC,oBAAoB,KAAK,KAAK,QAAQ,CACtC,QAAO,OAAO;UAEb;AACD,UAAI,SAAS,KAAK,IAAI,SAAS,KAAK,EAAE;OAClC,MAAM,OAAO,QAAQ,IAAI,KAAK,IAAI,EAAE;OACpC,MAAM,OAAO,QAAQ,IAAI,KAAK,IAAI,EAAE;AACpC,YAAK,KAAK;QAAE,KAAK;QAAK;QAAK,CAAC;AAC5B,YAAK,KAAK;QAAE,KAAK;QAAK;QAAK,CAAC;AAC5B,eAAQ,IAAI,MAAM,KAAK;AACvB,eAAQ,IAAI,MAAM,KAAK;;AAE3B,aAAO,OAAO,gBAAgB,OAAO,MAAM,UAAU,OAAO,QAAQ;;;;QAMhF,UAAS;AAGjB,SAAO;;;;;;;;CAQX,SAAS,oBAAoB,KAAK,KAAK,SAAS;EAC5C,MAAM,MAAM,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;AACvC,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,IAAI,GAAG,KAAK;GACxC,MAAM,OAAO,IAAI;AACjB,OAAI,KAAK,QAAQ,OAAO,KAAK,QAAQ,IACjC,QAAO;;AAGf,SAAO;;CAEX,SAAS,QAAQ,OAAO;AACpB,SAAO,MAAM,QAAQ,MAAM;;CAE/B,SAAS,WAAW,OAAO;AACvB,SAAO,OAAO,UAAU;;CAE5B,SAAS,SAAS,OAAO;AACrB,SAAQ,CAAC,YAAY,MAAM,IACvB,CAAC,QAAQ,MAAM,IACf,CAAC,WAAW,MAAM,IAClB,OAAO,UAAU;;CAEzB,SAAS,YAAY,OAAO;AACxB,SAAQ,OAAO,UAAU,YACrB,OAAO,UAAU,YACjB,OAAO,UAAU,aACjB,OAAO,UAAU,eACjB,iBAAiB,QACjB,iBAAiB,UACjB,UAAU;;CAElB,SAAS,YAAY,KAAK,KAAK;AAC3B,MAAI,EAAE,GAAG,eAAe,eAAe,IAAI,IAAI,EAAE,GAAG,eAAe,eAAe,IAAI,CAClF,QAAO;AAEX,SAAO;;;;;;;AC/IX,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,kBAAkB,QAAQ,eAAe,KAAK;;;;CAItD,IAAM,eAAN,MAAM,qBAAqB,MAAM;EAC7B,YAAY,SAAS;AACjB,SAAM,QAAQ;AAGd,UAAO,eAAe,MAAM,aAAa,UAAU;;;AAG3D,SAAQ,eAAe;;;;;;;;;;CAUvB,SAAS,gBAAgB,SAAS,SAAS;EACvC,IAAI;EACJ,MAAM,iBAAiB,IAAI,QAAQ,SAAS,gBAAgB,UAAU,QAAQ;AAC1E,mBAAgB,WAAW,SAAS,iBAAiB;AACjD,WAAO,IAAI,aAAa,uBAAuB,CAAC;MACjD,QAAQ;IACb;AACF,SAAO,QAAQ,KAAK,CAAC,SAAS,eAAe,CAAC,CAAC,MAAK,WAAU;AAC1D,gBAAa,cAAc;AAC3B,UAAO;MACR,WAAU;AACT,gBAAa,cAAc;AAC3B,SAAM;IACR;;AAEN,SAAQ,kBAAkB;;;;;;ACrD1B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,eAAe,QAAQ,aAAa,KAAK;CAgBjD,SAAS,WAAW,KAAK,YAAY;AACjC,MAAI,OAAO,eAAe,SACtB,QAAO,QAAQ;MAGf,QAAO,CAAC,CAAC,IAAI,MAAM,WAAW;;AAGtC,SAAQ,aAAa;;;;;;CAMrB,SAAS,aAAa,KAAK,aAAa;AACpC,MAAI,CAAC,YACD,QAAO;AAEX,OAAK,MAAM,aAAa,YACpB,KAAI,WAAW,KAAK,UAAU,CAC1B,QAAO;AAGf,SAAO;;AAEX,SAAQ,eAAe;;;;;;AC3BvB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,YAAY,KAAK;;;;;CAKzB,SAAS,UAAU,MAAM;AACrB,SAAQ,OAAO,SAAS,cACpB,OAAO,KAAK,eAAe,cAC3B,OAAO,KAAK,aAAa,cACzB,KAAK,cAAc;;AAE3B,SAAQ,YAAY;;;;;;ACZpB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,WAAW,KAAK;CACxB,IAAM,WAAN,MAAe;EACX,cAAc;AACV,QAAK,WAAW,IAAI,SAAS,SAAS,WAAW;AAC7C,SAAK,WAAW;AAChB,SAAK,UAAU;KACjB;;EAEN,IAAI,UAAU;AACV,UAAO,KAAK;;EAEhB,QAAQ,KAAK;AACT,QAAK,SAAS,IAAI;;EAEtB,OAAO,KAAK;AACR,QAAK,QAAQ,IAAI;;;AAGzB,SAAQ,WAAW;;;;;;ACnBnB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,iBAAiB,KAAK;CAC9B,MAAM;;;;CAIN,IAAM,iBAAN,MAAqB;EACjB,YAAY,WAAW,OAAO;AAC1B,QAAK,YAAY;AACjB,QAAK,QAAQ;AACb,QAAK,YAAY;AACjB,QAAK,YAAY,IAAI,UAAU,UAAU;;EAE7C,IAAI,WAAW;AACX,UAAO,KAAK;;EAEhB,IAAI,UAAU;AACV,UAAO,KAAK,UAAU;;EAE1B,KAAK,GAAG,MAAM;AACV,OAAI,CAAC,KAAK,WAAW;AACjB,SAAK,YAAY;AACjB,QAAI;AACA,aAAQ,QAAQ,KAAK,UAAU,KAAK,KAAK,OAAO,GAAG,KAAK,CAAC,CAAC,MAAK,QAAO,KAAK,UAAU,QAAQ,IAAI,GAAE,QAAO,KAAK,UAAU,OAAO,IAAI,CAAC;aAElI,KAAK;AACR,UAAK,UAAU,OAAO,IAAI;;;AAGlC,UAAO,KAAK,UAAU;;;AAG9B,SAAQ,iBAAiB;;;;;;AChCzB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,UAAU,KAAK;CACvB,MAAMC;CACN,MAAMC;;;;;CAKN,SAAS,QAAQ,UAAU,KAAK;AAC5B,SAAO,IAAI,SAAQ,YAAW;AAE1B,YAAM,QAAQ,MAAM,GAAGA,qBAAmB,iBAAiBD,SAAM,QAAQ,QAAQ,CAAC,QAAQ;AACtF,aAAS,OAAO,MAAM,WAAW;AAC7B,aAAQ,OAAO;MACjB;KACJ;IACJ;;AAEN,SAAQ,UAAU;;;;;;AClBlB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,uCAAuC,QAAQ,gCAAgC,QAAQ,aAAa,QAAQ,oBAAoB,QAAQ,kBAAkB,QAAQ,sBAAsB,QAAQ,2BAA2B,QAAQ,qBAAqB,QAAQ,kBAAkB,QAAQ,mBAAmB,QAAQ,iBAAiB,QAAQ,iBAAiB,QAAQ,oBAAoB,QAAQ,UAAU,QAAQ,mBAAmB,QAAQ,4BAA4B,QAAQ,qBAAqB,QAAQ,sBAAsB,QAAQ,sBAAsB,QAAQ,aAAa,QAAQ,gBAAgB,QAAQ,cAAc,QAAQ,wBAAwB,QAAQ,SAAS,QAAQ,cAAc,QAAQ,WAAW,QAAQ,oBAAoB,QAAQ,eAAe,QAAQ,mBAAmB,QAAQ,cAAc,QAAQ,oBAAoB,QAAQ,iBAAiB,QAAQ,oBAAoB,QAAQ,cAAc,QAAQ,oBAAoB,QAAQ,sBAAsB,QAAQ,uBAAuB,QAAQ,uBAAuB,QAAQ,iBAAiB,QAAQ,SAAS,QAAQ,gBAAgB,QAAQ,aAAa,QAAQ,sBAAsB,QAAQ,wBAAwB,QAAQ,qBAAqB,QAAQ,qBAAqB,QAAQ,mBAAmB,QAAQ,iBAAiB,QAAQ,gBAAgB,QAAQ,uBAAuB,KAAK;AAC50C,SAAQ,WAAW,QAAQ,UAAU,QAAQ,iBAAiB,QAAQ,YAAY,QAAQ,aAAa,QAAQ,eAAe,QAAQ,kBAAkB,QAAQ,eAAe,QAAQ,sBAAsB,QAAQ,QAAQ,QAAQ,mBAAmB,QAAQ,8CAA8C,QAAQ,+CAA+C,QAAQ,sBAAsB,KAAK;CACxY,IAAI;AACJ,QAAO,eAAe,SAAS,wBAAwB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,uBAAuB;;EAAyB,CAAC;CACtJ,IAAI;AACJ,QAAO,eAAe,SAAS,iBAAiB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,iBAAiB;;EAAkB,CAAC;CAClI,IAAI;AACJ,QAAO,eAAe,SAAS,kBAAkB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,aAAa;;EAAmB,CAAC;AAChI,QAAO,eAAe,SAAS,oBAAoB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,aAAa;;EAAqB,CAAC;AACpI,QAAO,eAAe,SAAS,sBAAsB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,aAAa;;EAAuB,CAAC;CACxI,IAAI;AACJ,QAAO,eAAe,SAAS,sBAAsB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,uBAAuB;;EAAuB,CAAC;AAClJ,QAAO,eAAe,SAAS,yBAAyB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,uBAAuB;;EAA0B,CAAC;CACxJ,IAAI;AACJ,QAAO,eAAe,SAAS,uBAAuB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,wBAAwB;;EAAwB,CAAC;CACrJ,IAAI;AACJ,QAAO,eAAe,SAAS,cAAc;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,OAAO;;EAAe,CAAC;AAClH,QAAO,eAAe,SAAS,iBAAiB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,OAAO;;EAAkB,CAAC;AACxH,QAAO,eAAe,SAAS,UAAU;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,OAAO;;EAAW,CAAC;AAC1G,QAAO,eAAe,SAAS,kBAAkB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,OAAO;;EAAmB,CAAC;AAC1H,QAAO,eAAe,SAAS,wBAAwB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,OAAO;;EAAyB,CAAC;AACtI,QAAO,eAAe,SAAS,wBAAwB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,OAAO;;EAAyB,CAAC;AACtI,QAAO,eAAe,SAAS,uBAAuB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,OAAO;;EAAwB,CAAC;AACpI,QAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,OAAO;;EAAsB,CAAC;AAChI,QAAO,eAAe,SAAS,eAAe;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,OAAO;;EAAgB,CAAC;AACpH,QAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,OAAO;;EAAsB,CAAC;AAChI,QAAO,eAAe,SAAS,kBAAkB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,OAAO;;EAAmB,CAAC;AAC1H,QAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,OAAO;;EAAsB,CAAC;CAChI,IAAI;AACJ,QAAO,eAAe,SAAS,eAAe;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,gBAAgB;;EAAgB,CAAC;CAC7H,IAAI;AACJ,QAAO,eAAe,SAAS,oBAAoB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,eAAe;;EAAqB,CAAC;CACtI,MAAME;AACN,SAAQ,eAAe;EACnB,aAAaA,UAAQ;EACrB,mBAAmBA,UAAQ;EAC3B,yBAAyBA,UAAQ;EACjC,mBAAmBA,UAAQ;EAC9B;CACD,IAAIC;AACJ,QAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,aAAW;;EAAsB,CAAC;AACpI,QAAO,eAAe,SAAS,YAAY;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,aAAW;;EAAa,CAAC;AAClH,QAAO,eAAe,SAAS,eAAe;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,aAAW;;EAAgB,CAAC;AACxH,QAAO,eAAe,SAAS,UAAU;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,aAAW;;EAAW,CAAC;AAC9G,QAAO,eAAe,SAAS,yBAAyB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,aAAW;;EAA0B,CAAC;AAC5I,QAAO,eAAe,SAAS,eAAe;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,aAAW;;EAAgB,CAAC;AACxH,QAAO,eAAe,SAAS,iBAAiB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,aAAW;;EAAkB,CAAC;AAC5H,QAAO,eAAe,SAAS,cAAc;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,aAAW;;EAAe,CAAC;CACtH,IAAI;AACJ,QAAO,eAAe,SAAS,uBAAuB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,YAAY;;EAAwB,CAAC;CACzI,IAAI;AACJ,QAAO,eAAe,SAAS,uBAAuB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,4BAA4B;;EAAwB,CAAC;AACzJ,QAAO,eAAe,SAAS,sBAAsB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,4BAA4B;;EAAuB,CAAC;AACvJ,QAAO,eAAe,SAAS,6BAA6B;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,4BAA4B;;EAA8B,CAAC;AACrK,QAAO,eAAe,SAAS,oBAAoB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,4BAA4B;;EAAqB,CAAC;CACnJ,IAAI;AACJ,QAAO,eAAe,SAAS,WAAW;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,eAAe;;EAAY,CAAC;AACpH,QAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,eAAe;;EAAsB,CAAC;AACxI,QAAO,eAAe,SAAS,kBAAkB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,eAAe;;EAAmB,CAAC;AAClI,QAAO,eAAe,SAAS,kBAAkB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,eAAe;;EAAmB,CAAC;CAClI,IAAIC;AACJ,QAAO,eAAe,SAAS,oBAAoB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,qBAAmB;;EAAqB,CAAC;CAC1I,IAAIC;AACJ,QAAO,eAAe,SAAS,mBAAmB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,oBAAkB;;EAAoB,CAAC;CACvI,IAAIC;AACJ,QAAO,eAAe,SAAS,sBAAsB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,uBAAqB;;EAAuB,CAAC;CAChJ,IAAIC;AACJ,QAAO,eAAe,SAAS,4BAA4B;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAOA,6BAA2B;;EAA6B,CAAC;CAClK,IAAI;AACJ,QAAO,eAAe,SAAS,uBAAuB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,mBAAmB;;EAAwB,CAAC;AAChJ,QAAO,eAAe,SAAS,mBAAmB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,mBAAmB;;EAAoB,CAAC;AACxI,QAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,mBAAmB;;EAAsB,CAAC;CAC5I,IAAI;AACJ,QAAO,eAAe,SAAS,cAAc;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,aAAa;;EAAe,CAAC;CACxH,IAAI;AACJ,QAAO,eAAe,SAAS,iCAAiC;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,cAAc;;EAAkC,CAAC;AAC/J,QAAO,eAAe,SAAS,wCAAwC;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,cAAc;;EAAyC,CAAC;AAC7K,QAAO,eAAe,SAAS,uBAAuB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,cAAc;;EAAwB,CAAC;AAC3I,QAAO,eAAe,SAAS,gDAAgD;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,cAAc;;EAAiD,CAAC;AAC7L,QAAO,eAAe,SAAS,+CAA+C;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,cAAc;;EAAgD,CAAC;AAC3L,QAAO,eAAe,SAAS,oBAAoB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,cAAc;;EAAqB,CAAC;CACrI,IAAI;AACJ,QAAO,eAAe,SAAS,SAAS;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,QAAQ;;EAAU,CAAC;CACzG,IAAI;AACJ,QAAO,eAAe,SAAS,uBAAuB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,WAAW;;EAAwB,CAAC;CACxI,IAAI;AACJ,QAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,UAAU;;EAAiB,CAAC;AACzH,QAAO,eAAe,SAAS,mBAAmB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,UAAU;;EAAoB,CAAC;CAC/H,IAAI;AACJ,QAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,MAAM;;EAAiB,CAAC;AACrH,QAAO,eAAe,SAAS,cAAc;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,MAAM;;EAAe,CAAC;CACjH,IAAI;AACJ,QAAO,eAAe,SAAS,aAAa;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,OAAO;;EAAc,CAAC;CAChH,IAAI;AACJ,QAAO,eAAe,SAAS,kBAAkB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,WAAW;;EAAmB,CAAC;CAC9H,IAAI;AACJ,QAAO,eAAe,SAAS,WAAW;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,UAAU;;EAAY,CAAC;CAC/G,MAAM;AACN,SAAQ,WAAW,EACf,SAAS,WAAW,SACvB;;;;;;;;;;AC3GD;;;;;;;;;;;;;;;;;;;;;;;;AAqCI;;AAEE;;;AAQA;;;AAcF;;;AAQA;AAEI;;AAEA;;;AAMJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDA;AAIA;;;;;;AAWA;AAKA;AAMA;;;;;;AAQA;;;;;;;;;AChKJ,IAAa,wBAAb,MAAgE;CAK9D,YAAY,QAAqC;OAJxC,OAAO;OAER,+BAAoC,IAAI,KAAK;AAGnD,OAAK,gBAAgB,OAAO;AAG5B,MAAI,CAAC,GAAG,WAAW,KAAK,cAAc,CACpC,IAAG,UAAU,KAAK,eAAe,EAAE,WAAW,MAAM,CAAC;;CAIzD,MAAM,YAAY,OAA+C;AAC/D,MAAI;AACF,QAAK,MAAM,QAAQ,OAAO;IACxB,MAAM,UAAU,KAAK;IAGrB,IAAI,WAAW,KAAK,aAAa,IAAI,QAAQ;AAE7C,QAAI,CAAC,UAAU;KACb,MAAM,gCAAe,IAAI,MAAM,EAAC,aAAa,CAAC,QAAQ,SAAS,IAAI;AACnE,gBAAW,KAAK,KAAK,KAAK,eAAe,GAAG,aAAa,SAAS,QAAQ,QAAQ;AAClF,UAAK,aAAa,IAAI,SAAS,SAAS;;IAG1C,MAAM,WAAW,KAAK,UAAU,KAAK,GAAG;AACxC,OAAG,eAAe,UAAU,UAAU,OAAO;;AAG/C,UAAO,MACL,YAAY,MAAM,OAAO,sCAAsC,KAAK,gBACrE;AAED,UAAO,EAAE,MAAMO,8BAAiB,SAAS;WAClC,OAAO;AACd,UAAO,MAAM,0CAA0C,MAAM;AAC7D,UAAO;IACL,MAAMA,8BAAiB;IACvB,OAAO,iBAAiB,QAAQ,wBAAQ,IAAI,MAAM,2BAA2B;IAC9E;;;CAIL,MAAM,WAA0B;AAE9B,SAAO,QAAQ,SAAS;;;;;;;;;;AClD5B,IAAI,0BAA0B,MAAM;CACnC,YAAY,YAAY;AACvB,OAAK,aAAa;AAClB,OAAK,WAAW,kBAAkB;AAClC,OAAK,UAAU,kBAAkB;AACjC,OAAK,UAAU,kBAAkB;;;;;CAKlC,YAAY,OAAO,SAAS;EAC3B,MAAM,SAAS,KAAK,QAAQ,IAAI,MAAM,KAAK,WAAW,aAAa,QAAQ;AAC3E,+CAAsB,SAAS,KAAK,YAAY,QAAQ,KAAK,MAAM;;;;;;;ACXrE,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,iBAAiB,KAAK;AAS9B,EAAC,SAAU,gBAAgB;;;;AAIvB,iBAAe,eAAe,eAAe,KAAK;;;;;AAKlD,iBAAe,eAAe,aAAa,KAAK;;;;;;AAMhD,iBAAe,eAAe,sBAAsB,KAAK;;;;;;AAMzD,iBAAe,eAAe,eAAe,KAAK;;;;;;AAMlD,iBAAe,eAAe,uBAAuB,KAAK;;;;AAI1D,iBAAe,eAAe,eAAe,KAAK;;;;;;AAMlD,iBAAe,eAAe,eAAe,KAAK;;;;AAIlD,iBAAe,eAAe,oBAAoB,KAAK;;;;;;AAMvD,iBAAe,eAAe,uBAAuB,KAAK;;;;;AAK1D,iBAAe,eAAe,qBAAqB,KAAK;;;;;AAKxD,iBAAe,eAAe,wBAAwB,MAAM;;;;;;;;AAQ5D,iBAAe,eAAe,yBAAyB,MAAM;;;;;AAK7D,iBAAe,eAAe,aAAa,MAAM;;;;;;;;;;;AAWjD,iBAAe,eAAe,kBAAkB,MAAM;;;;AAItD,iBAAe,eAAe,mBAAmB,MAAM;;;;;;;AAOvD,iBAAe,eAAe,cAAc,MAAM;;;;;AAKlD,iBAAe,eAAe,iBAAiB,MAAM;;;;AAIrD,iBAAe,eAAe,cAAc,MAAM;IAClC,QAAQ,mBAAmB,QAAQ,iBAAiB,EAAE,EAAE;;;;;;AC5H5E,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,mCAAmC,QAAQ,0BAA0B,QAAQ,2BAA2B,KAAK;CACrH,MAAMC;CACN,MAAMC;CACN,MAAMC;;;;CAIN,SAAS,yBAAyB,SAAS,UAAU,MAAM;AAEvD,MAAI,KACA,MAAK,IAAI,CAAC,GAAG,MAAM,OAAO,QAAQ,KAAK,CACnC,KAAI,OAAO,KAAK,SACZ,SAAQ,OAAO,GAAG,EAAE;MAEpB,MAAK,IAAI,KAAK,EACV,SAAQ,OAAO,GAAG,EAAE;AAIpC,UAAQ,IAAI,gBAAgB,WAAW,qBAAqB,uBAAuB;AACnF,UAAQ,IAAI,UAAU,WAAW,qBAAqB,yCAAyC;AAC/F,SAAO;;AAEX,SAAQ,2BAA2B;;;;;;CAMnC,SAAS,wBAAwB,MAAM;AACnC,MAAI,CAACF,YAAU,aAAa,KAAK,IAAI,OAAO,KAAK,SAAS,YAAY,OAAO,KAAK,QAAQ,SACtF,QAAO,IAAIC,gBAAc,SAAS,oCAAoCC,4BAA0B,eAAeA,4BAA0B,eAAe,UAAU;EACtK,IAAI,OAAO,EAAE;AACb,MAAIF,YAAU,aAAa,KAAK,KAAK,EACjC;QAAK,IAAI,CAAC,GAAG,MAAM,OAAO,QAAQ,KAAK,KAAK,CACxC,KAAI,OAAO,KAAK,SACZ,MAAK,KAAK;;AAGtB,SAAO,IAAIC,gBAAc,SAAS,KAAK,KAAK,KAAK,MAAM,KAAK;;AAEhE,SAAQ,0BAA0B;;;;;CAKlC,SAAS,iCAAiC,SAAS;EAC/C,IAAI,OAAO,EAAE;AACb,UAAQ,SAAS,OAAO,QAAQ;AAC5B,OAAI,IAAI,aAAa,KAAK,eACtB;AACJ,OAAI,IAAI,aAAa,KAAK,iBACtB;AACJ,OAAI,KAAK,eAAe,IAAI,CACxB,MAAK,KAAK,KAAK,MAAM;OAErB,MAAK,OAAO;IAClB;AACF,SAAO;;AAEX,SAAQ,mCAAmC;;;;;;AC7D3C,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,sBAAsB,KAAK;CACnC,MAAME;CACN,MAAM;CACN,MAAM;CACN,MAAMC;;;;;;;CAON,IAAMC,wBAAN,MAA0B;EACtB,YAAY,SAAS;AACjB,QAAK,iBAAiB;;EAE1B,aAAa,SAAS;AAClB,UAAO,cAAc,gBAAgB,KAAK,gBAAgB,QAAQ;;EAEtE,MAAM,QAAQ,OAAO,SAAS;GAC1B,IAAI,IAAI,IAAI;GACZ,IAAI,MAAM,SAAS,MAAM,KAAK,QAAQ,QAAQ,IAAI,EAAE,aAAa,KAAK,IAAI,eAAe,QAAQ,OAAO,KAAK,IAAI,KAAK,EAAE,EAAE,cAAc,IAAI,WAAW,OAAO,EAAE,aAAa,OAAO,IAAI,YAAY,GAAG,OAAO,EAAE,SAAS,OAAO,IAAI,cAAc,EAAE,YAAY,IAAI,cAAc,UAAU,EAAE,aAAa,IAAI,cAAc,UAAU,EAAE,YAAY,IAAI,cAAc,UAAU,EAAE,aAAa,IAAI,cAAc,UAAU;AAC5Z,cAAW,MAAM,KAAK,OAAO,OAAO,OAAO,OAAO,EAAE,EAAE,UAAU,EAAE;IAAE,QAAQ;IAAQ,SAASF,iBAAe,yBAAyB,IAAI,WAAW,SAAS,EAAE,CAAC,CAAC,IAAI,UAAU,IAAI,KAAK;IAAE,MAAM;IAAa,SAAS,KAAK,QAAQ,WAAW,QAAQ,OAAO,KAAK,IAAI,KAAK;IACzQ,CAAC,CAAC,CACC,MAAK,kBAAiB;AACvB,cAAU,QAAQA,iBAAe,iCAAiC,cAAc,QAAQ,CAAC;IAKzF,IAAI;AACJ,QAAI;AACA,oBAAe,cAAc;aAE1BG,MAAI;AACX,YAAQ,cAAR;KACI,KAAK;KACL,KAAK;KACL,KAAK,iBAED,OAAM,IAAI,cAAc,SAAS,uBAAuB,cAAc,QAAQF,4BAA0B,eAAeA,4BAA0B,eAAe,SAAS;;AAEjL,QAAI,CAAC,cAAc,GACf,QAAO,cAAc,MAAM,CAAC,MAAK,UAAS;AACtC,WAAMD,iBAAe,wBAAwB,MAAM;aAC9C;AACL,WAAM,IAAI,cAAc,SAAS,mBAAmB,cAAc,SAAS,0CAA0CC,4BAA0B,eAAeA,4BAA0B,eAAe,UAAU;MACnN;AAEN,QAAI,IAAI,SACJ,QAAO,cAAc,MAAM,CAAC,MAAK,UAAS,OAAO,EAAE,SAAS,OAAO,IAAI,YAAY,QAAQ;AACvF,WAAM,IAAI,cAAc,SAAS,wCAAwCA,4BAA0B,eAAeA,4BAA0B,eAAe,UAAU;MACvK;AAEN,WAAO,cAAc,aAAa,CAAC,MAAK,UAAS,OAAO,EAAE,WAAW,IAAI,WAAW,MAAM,EAAE,IAAI,cAAc,QAAQ;AAClH,WAAM,IAAI,cAAc,SAAS,gCAAgCA,4BAA0B,eAAeA,4BAA0B,eAAe,UAAU;MAC/J;OACF,WAAW;AAEX,QAAI,kBAAkB,SAAS,OAAO,SAAS,aAC3C,OAAM,IAAI,cAAc,SAAS,OAAO,SAASA,4BAA0B,eAAeA,4BAA0B,eAAe,WAAW;AAClJ,UAAM,IAAI,cAAc,SAAS,kBAAkB,QAAQ,OAAO,UAAU,OAAO;KACrF,CACG,MAAK,YAAW;AACjB,eAAW,QAAQ,QAAQ;AAC3B,cAAU,QAAQ;KAAE,MAAM;KAAM,QAAQ;KAAI,CAAC;AAC7C,eAAW,QAAQ,EAAE,CAAC;KACxB,CACG,OAAO,WAAW;IAEnB,IAAI,QAAQ,kBAAkB,cAAc,WAAW,SACjD,IAAI,cAAc,SAAS,kBAAkB,QAAQ,OAAO,UAAU,QAAQA,4BAA0B,eAAeA,4BAA0B,eAAe,UAAU;AAChL,UAAM,aAAa,OAAO;AAC1B,UAAM,cAAc,OAAO,QAAQ;AACnC,cAAU,cAAc,MAAM;AAC9B,eAAW,cAAc,MAAM;AAC/B,cAAU,cAAc,MAAM;AAC9B,eAAW,cAAc,MAAM;KACjC;AACF,UAAO,IAAI,cAAc,UAAU,SAAS,KAAK,IAAI,UAAU,QAAQ,OAAO,KAAK,IAAI,KAAK,EAAE,EAAE,OAAO,UAAU,SAAS,WAAW,SAAS,UAAU,SAAS,WAAW,QAAQ;;;;;;;;;;;;;;;;;;;EAmBxL,QAAQ,QAAQ,SAAS;GACrB,IAAI,OAAO,QAAQ;AACnB,OAAI,KAAK,SAAS,IAAI,CAClB,QAAO,KAAK,UAAU,GAAG,KAAK,SAAS,EAAE;GAC7C,IAAI,aAAa,OAAO;AACxB,OAAI,QAAQ,uBAAuB,MAAM;AACrC,iBAAa,UAAU,eAAe,WAAW;AACjD,iBAAa,WAAW,UAAU,GAAG,EAAE,CAAC,aAAa,GAAG,WAAW,UAAU,EAAE;;AAEnF,UAAO,GAAG,KAAK,GAAG,OAAO,QAAQ,SAAS,GAAG;;EAEjD,gBAAgB,QAAkC;GAC9C,MAAM,IAAI,IAAI,cAAc,SAAS,8CAA8CA,4BAA0B,eAAeA,4BAA0B,eAAe,eAAe;AACpL,KAAE,aAAa,OAAO;AACtB,KAAE,cAAc,OAAO,QAAQ;AAC/B,SAAM;;EAEV,OAAO,QAAkC;GACrC,MAAM,IAAI,IAAI,cAAc,SAAS,8CAA8CA,4BAA0B,eAAeA,4BAA0B,eAAe,eAAe;AACpL,KAAE,aAAa,OAAO;AACtB,KAAE,cAAc,OAAO,QAAQ;AAC/B,SAAM;;EAEV,gBAAgB,QAA6C;GACzD,MAAM,IAAI,IAAI,cAAc,SAAS,8CAA8CA,4BAA0B,eAAeA,4BAA0B,eAAe,eAAe;AACpL,KAAE,aAAa,OAAO;AACtB,KAAE,cAAc,OAAO,QAAQ;AAC/B,SAAM;;;AAGd,SAAQ,sBAAsBC;;;;;;AC7H9B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;CAC7D,IAAI;AACJ,QAAO,eAAe,SAAS,uBAAuB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,kBAAkB;;EAAwB,CAAC;CAC/I,IAAI;AACJ,QAAO,eAAe,SAAS,4BAA4B;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,eAAe;;EAA6B,CAAC;AACtJ,QAAO,eAAe,SAAS,2BAA2B;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,eAAe;;EAA4B,CAAC;AACpJ,QAAO,eAAe,SAAS,oCAAoC;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,eAAe;;EAAqC,CAAC;CACtK,IAAI;AACJ,QAAO,eAAe,SAAS,kBAAkB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,0BAA0B;;EAAmB,CAAC;;;;;;;;ACQ7I,MAAM,iBAAiB;;;;AAKvB,IAAa,iBAAb,MAAyD;CAQvD,YAAY,QAA8B;OAPjC,OAAO;AAQd,OAAK,sBAAsB,OAAO;AAClC,OAAK,cAAc,OAAO;AAC1B,OAAK,aAAa,OAAO;AACzB,OAAK,gBAAgB,OAAO;AAS5B,OAAK,mBAAmB,IAAI,wBAPV,IAAIE,sCAAoB;GACxC,SAAS,GAAG,OAAO,qBAAqB;GACxC,MAAM;IACJ,aAAa,OAAO;IACpB,6BAA6B;IAC9B;GACF,CAAC,CAC4D;AAE9D,SAAO,MAAM,6BAA6B;;CAG5C,MAAM,YAAY,OAA+C;AAC/D,MAAI;GAEF,MAAMC,aAAqB,MAAM,KAAK,SAAS,KAAK,wBAAwB,KAAK,CAAC;GAElF,MAAMC,UAA8B;IAClC,qBAAqB,KAAK;IAC1B,aAAa,KAAK;IAClB,YAAY,KAAK;IACjB,eAAe,KAAK;IACpB,OAAO;IACR;GAED,MAAM,WAAW,MAAM,KAAK,iBAAiB,YAAY,QAAQ;AAEjE,OAAI,CAAC,SAAS,SAAS,QACrB,OAAM,IAAI,MAAM,yBAAyB,SAAS,SAAS,UAAU;AAGvE,UAAO,MAAM,yBAAyB,MAAM,OAAO,2BAA2B;AAC9E,UAAO,EAAE,MAAMC,8BAAiB,SAAS;WAClC,OAAO;AACd,UAAO,MAAM,qCAAqC,MAAM;AACxD,UAAO;IACL,MAAMA,8BAAiB;IACvB,OAAO,iBAAiB,QAAQ,wBAAQ,IAAI,MAAM,oBAAoB;IACvE;;;CAIL,AAAQ,wBAAwB,WAAgC;AAC9D,SAAO;GACL,SAAS,UAAU;GACnB,QAAQ,UAAU;GAClB,cAAc,UAAU;GACxB,MAAM,UAAU;GAChB,aAAa,UAAU;GACvB,qBAAqB,UAAU;GAC/B,eAAe,UAAU;GACzB,aAAa,UAAU,eAAe,YAAY;GAClD,YAAY,SAAS,UAAU,WAAW;GAC1C,aAAa,SAAS,UAAU,YAAY;GAC5C,aAAa,UAAU;GACvB,cAAc,UAAU;GACxB,iBAAiB,UAAU,mBAAmB;GAC9C,kBAAkB,UAAU,oBAAoB;GAChD,gBAAgB,UAAU,kBAAkB;GAC5C,iBAAiB,UAAU,mBAAmB;GAC9C,MAAM,KAAK,YAAY,UAAU,KAAK;GACtC,QAAQ,UAAU;GAClB,eAAe,UAAU;GACzB,WAAW;IAAE,SAAS,OAAO,UAAU,UAAU,QAAQ;IAAE,OAAO,UAAU,UAAU;IAAO;GAC7F,UAAU;IAAE,SAAS,OAAO,UAAU,SAAS,QAAQ;IAAE,OAAO,UAAU,SAAS;IAAO;GAC1F,YAAY,UAAU;GACtB,UAAU,SAAS,UAAU,SAAS;GACvC;;CAGH,AAAQ,YAAY,MAAmC;AACrD,UAAQ,MAAR;GACE,KAAKC,sBAAa,OAChB,QAAOC,SAAc;GACvB,KAAKD,sBAAa,OAChB,QAAOC,SAAc;GACvB,KAAKD,sBAAa,SAChB,QAAOC,SAAc;GACvB,KAAKD,sBAAa,SAChB,QAAOC,SAAc;GACvB,KAAKD,sBAAa,SAChB,QAAOC,SAAc;GACvB,QACE,QAAOA,SAAc;;;CAI3B,MAAM,WAA0B;AAE9B,SAAO,QAAQ,SAAS;;;;;;;AClG5B,IAAa,iBAAb,MAAoD;CAIlD,YAAY,QAA+B;OAFnC,WAAgC,EAAE;AAGxC,OAAK,OAAO,OAAO;AAEnB,OAAK,qBAAqB,OAAO;AAEjC,SAAO,MAAM,mCAAmC,KAAK,SAAS,OAAO,aAAa;;CAGpF,AAAQ,qBAAqB,QAAqC;AAChE,MAAI,OAAO,mBAAmB,OAAO,UAAU,OAAO,qBAAqB;AACzE,UAAO,MAAM,mCAAmC;AAChD,QAAK,WACH,IAAI,eAAe;IACjB,QAAQ,OAAO;IACf,oBAAoB,OAAO;IAC3B,qBAAqB,OAAO;IAC5B,aAAa,OAAO;IACpB,YAAY,OAAO;IACnB,eAAe,OAAO;IACvB,CAAC,CACH;SACI;AACL,UAAO,MAAM,oDAAoD;AACjE,QAAK,WACH,IAAI,sBAAsB,EACxB,eAAe,OAAO,eACvB,CAAC,CACH;;;CAIL,cAAc;AACZ,SAAO,KAAK;;;;;CAMd,WAAW,SAAkC;AAC3C,OAAK,SAAS,KAAK,QAAQ;AAC3B,SAAO,MAAM,SAAS,QAAQ,KAAK,4BAA4B,KAAK,SAAS,SAAS;;;;;CAMxF,cAAc,SAAkC;EAC9C,MAAM,QAAQ,KAAK,SAAS,QAAQ,QAAQ;AAC5C,MAAI,QAAQ,IAAI;AACd,QAAK,SAAS,OAAO,OAAO,EAAE;AAC9B,UAAO,MAAM,WAAW,QAAQ,KAAK,4BAA4B,KAAK,SAAS,SAAS;;;;;;CAO5F,gBAAsB;AACpB,OAAK,WAAW,EAAE;AAClB,SAAO,MAAM,uBAAuB;;;;;CAMtC,QAAQ,MAA2B;AACjC,OAAK,OAAO;;;;;CAMd,OAAO,OAAuB,gBAAsD;AAClF,SAAO,MAAM,uCAAuC,MAAM,OAAO,UAAU;EAE3E,MAAM,uBAAuB,qBAAqB,aAAa;EAE/D,MAAMC,kCAAkD,MAAM,QAAQ,SAAS;AAG7E,OAAI,KAAK,uBAAuB,SAAS,gCACvC,QAAO;AAET,UAAO;IACP;AAEF,SAAO,MACL,0CAA0C,gCAAgC,OAAO,oBAClF;EAED,MAAM,mBAAmB;EACzB,MAAM,sBAAsB,mBAAmB,OAAO;EAEtD,MAAMC,uBAAuC,gCAAgC,QAAQ,SAAS;GAC5F,MAAM,UAAU,KAAK,aAAa,CAAC;AAGnC,OAAI,qBAAqB,eAAe,QAAQ,EAAE;AAChD,WAAO,MACL,kBAAkB,KAAK,KAAK,KAAK,KAAK,aAAa,CAAC,OAAO,YAAY,QAAQ,aAChF;AACD,WAAO;;GAGT,MAAM,mBAAoB,KAAK,WAAW,iBAAiB,gBAA2B;GACtF,MAAM,oBAAqB,KAAK,WAAW,iBAAiB,iBAA4B;GAMxF,MAAM,qBAFY,OAAO,WAAW,kBAAkB,OAAO,GAC1C,OAAO,WAAW,mBAAmB,OAAO,GACX;GAEpD,MAAM,kBAAkB,sBAAsB,OAAO;AAErD,OAAI,qBAAqB,qBAAqB;AAE5C,yBAAqB,WAAW,QAAQ;AAExC,WAAO,KACL,kBAAkB,QAAQ,WAAW,KAAK,KAAK,KAAK,KAAK,aAAa,CAAC,OAAO,uBAAuB,gBAAgB,QAAQ,EAAE,CAAC,yBAAyB,iBAAiB,qDAC3K;AACD,WAAO;;AAET,UAAO;IACP;AAEF,SAAO,MACL,YAAY,gCAAgC,SAAS,qBAAqB,OAAO,8BAA8B,qBAAqB,OAAO,YAC5I;EAGD,MAAMC,aAA8B,qBAAqB,KAAK,SAC5D,gBAAgB,yBAAyB,KAAK,CAC/C;AAED,MAAI,KAAK,SAAS,WAAW,GAAG;AAC9B,UAAO,MAAM,yBAAyB;AACtC,kBAAe,EAAE,MAAMC,8BAAiB,SAAS,CAAC;AAClD;;EAIF,MAAM,iBAAiB,KAAK,mBAAmB;AAE/C,MAAI,eAAe,WAAW,GAAG;AAC/B,UAAO,MAAM,gCAAgC,KAAK,OAAO;AACzD,kBAAe,EAAE,MAAMA,8BAAiB,SAAS,CAAC;AAClD;;AAIF,UAAQ,IAAI,eAAe,KAAK,YAAY,QAAQ,YAAY,WAAW,CAAC,CAAC,CAC1E,WAAW,eAAe,EAAE,MAAMA,8BAAiB,SAAS,CAAC,CAAC,CAC9D,OAAO,UAAU,eAAe;GAAE,MAAMA,8BAAiB;GAAQ;GAAO,CAAC,CAAC;;CAG/E,AAAQ,oBAAyC;AAC/C,MAAI,KAAK,SAAS,cAAc,OAE9B,QAAO,KAAK,SAAS,QAClB,YAAY,QAAQ,SAAS,eAAe,QAAQ,SAAS,WAC/D;AAIH,SAAO,KAAK;;;;;CAMd,MAAM,WAA0B;AAC9B,QAAM,QAAQ,IAAI,KAAK,SAAS,KAAK,YAAY,QAAQ,UAAU,CAAC,CAAC;;;;;CAMvE,MAAM,aAA4B;AAEhC,SAAO,QAAQ,SAAS;;;;;;;ACvM5B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,mCAAmC,KAAK;CAChD,MAAM,WAAW,QAAQ,SAAS;CAClC,MAAM,uBAAuB;EACzB;EACA;EACA;EACA;EACA;EACH;CACD,IAAM,mCAAN,MAAuC;EACnC,cAAc;AACV,QAAK,gBAAgB,OAAO,cAAc;AAC1C,QAAK,WAAW;;;;;;;;EAQpB,KAAK,WAAS,QAAQ;AAClB,OAAI,kBAAkB,SAAS,aAC3B,QAAO,KAAK,kBAAkBC,WAAS,OAAO;AAElD,OAAI,OAAO,WAAW,WAClB,QAAO,KAAK,cAAcA,WAAS,OAAO;AAE9C,UAAO;;EAEX,cAAc,WAAS,QAAQ;GAC3B,MAAM,UAAU;GAChB,MAAM,iBAAiB,SAAU,GAAG,MAAM;AACtC,WAAO,QAAQ,KAAKA,iBAAe,OAAO,MAAM,MAAM,KAAK,CAAC;;AAEhE,UAAO,eAAe,gBAAgB,UAAU;IAC5C,YAAY;IACZ,cAAc;IACd,UAAU;IACV,OAAO,OAAO;IACjB,CAAC;;;;;AAMF,UAAO;;;;;;;;;EASX,kBAAkB,WAAS,IAAI;AAE3B,OADY,KAAK,aAAa,GAAG,KACrB,OACR,QAAO;AACX,QAAK,gBAAgB,GAAG;AAExB,wBAAqB,SAAQ,eAAc;AACvC,QAAI,GAAG,gBAAgB,OACnB;AACJ,OAAG,cAAc,KAAK,kBAAkB,IAAI,GAAG,aAAaA,UAAQ;KACtE;AAEF,OAAI,OAAO,GAAG,mBAAmB,WAC7B,IAAG,iBAAiB,KAAK,qBAAqB,IAAI,GAAG,eAAe;AAExE,OAAI,OAAO,GAAG,QAAQ,WAClB,IAAG,MAAM,KAAK,qBAAqB,IAAI,GAAG,IAAI;AAGlD,OAAI,OAAO,GAAG,uBAAuB,WACjC,IAAG,qBAAqB,KAAK,yBAAyB,IAAI,GAAG,mBAAmB;AAEpF,UAAO;;;;;;;;EAQX,qBAAqB,IAAI,UAAU;GAC/B,MAAM,iBAAiB;AACvB,UAAO,SAAU,OAAO,UAAU;IAC9B,IAAI;IACJ,MAAMC,YAAU,KAAK,eAAe,aAAa,GAAG,MAAM,QAAQ,OAAO,KAAK,IAAI,KAAK,IAAI,GAAG;AAC9F,QAAIA,aAAW,OACX,QAAO,SAAS,KAAK,MAAM,OAAO,SAAS;IAE/C,MAAM,kBAAkBA,SAAO,IAAI,SAAS;AAC5C,WAAO,SAAS,KAAK,MAAM,OAAO,mBAAmB,SAAS;;;;;;;;;EAStE,yBAAyB,IAAI,UAAU;GACnC,MAAM,iBAAiB;AACvB,UAAO,SAAU,OAAO;IACpB,MAAM,MAAM,eAAe,aAAa,GAAG;AAC3C,QAAI,QAAQ,QACR;SAAI,UAAU,WAAW,EACrB,gBAAe,gBAAgB,GAAG;cAE7B,IAAI,WAAW,OACpB,QAAO,IAAI;;AAGnB,WAAO,SAAS,MAAM,MAAM,UAAU;;;;;;;;;;EAU9C,kBAAkB,IAAI,UAAU,WAAS;GACrC,MAAM,iBAAiB;AACvB,UAAO,SAAU,OAAO,UAAU;;;;;;;;;AAS9B,QAAI,eAAe,SACf,QAAO,SAAS,KAAK,MAAM,OAAO,SAAS;IAE/C,IAAI,MAAM,eAAe,aAAa,GAAG;AACzC,QAAI,QAAQ,OACR,OAAM,eAAe,gBAAgB,GAAG;IAE5C,IAAI,YAAY,IAAI;AACpB,QAAI,cAAc,QAAW;AACzB,iCAAY,IAAI,SAAS;AACzB,SAAI,SAAS;;IAEjB,MAAM,kBAAkB,eAAe,KAAKD,WAAS,SAAS;AAE9D,cAAU,IAAI,UAAU,gBAAgB;;;;AAIxC,mBAAe,WAAW;AAC1B,QAAI;AACA,YAAO,SAAS,KAAK,MAAM,OAAO,gBAAgB;cAE9C;AACJ,oBAAe,WAAW;;;;EAItC,gBAAgB,IAAI;GAChB,MAAM,MAAM,OAAO,OAAO,KAAK;AAE/B,MAAG,KAAK,iBAAiB;AACzB,UAAO;;EAEX,aAAa,IAAI;AACb,UAAO,GAAG,KAAK;;;AAGvB,SAAQ,mCAAmC;;;;;;AC7K3C,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,2BAA2B,KAAK;CACxC,MAAME;CACN,MAAM,aAAa,QAAQ,cAAc;CACzC,MAAMC;CACN,IAAM,2BAAN,cAAuCA,qCAAmC,iCAAiC;EACvG,cAAc;AACV,UAAO;AACP,QAAK,4BAAY,IAAI,KAAK;AAC1B,QAAK,SAAS,EAAE;AAChB,QAAK,aAAa,WAAW,WAAW;IACpC,MAAM,KAAK,MAAM,KAAK,KAAK;IAC3B,QAAQ,KAAK,QAAQ,KAAK,KAAK;IAC/B,OAAO,KAAK,OAAO,KAAK,KAAK;IAC7B,SAAS,KAAK,SAAS,KAAK,KAAK;IACjC,gBAAgB,KAAK,SAAS,KAAK,KAAK;IAC3C,CAAC;;EAEN,SAAS;GACL,IAAI;AACJ,WAAQ,KAAK,KAAK,OAAO,KAAK,OAAO,SAAS,QAAQ,QAAQ,OAAO,KAAK,IAAI,KAAKD,SAAM;;EAE7F,KAAK,WAAS,IAAI,SAAS,GAAG,MAAM;AAChC,QAAK,cAAcE,UAAQ;AAC3B,OAAI;AACA,WAAO,GAAG,KAAK,SAAS,GAAG,KAAK;aAE5B;AACJ,SAAK,cAAc;;;EAG3B,SAAS;AACL,QAAK,WAAW,QAAQ;AACxB,UAAO;;EAEX,UAAU;AACN,QAAK,WAAW,SAAS;AACzB,QAAK,UAAU,OAAO;AACtB,QAAK,SAAS,EAAE;AAChB,UAAO;;;;;;;;EAQX,MAAM,KAAK,MAAM;AAKb,OAAI,SAAS,YACT;GACJ,MAAMA,YAAU,KAAK,OAAO,KAAK,OAAO,SAAS;AACjD,OAAIA,cAAY,OACZ,MAAK,UAAU,IAAI,KAAKA,UAAQ;;;;;;;EAQxC,SAAS,KAAK;AACV,QAAK,UAAU,OAAO,IAAI;;;;;;EAM9B,QAAQ,KAAK;GACT,MAAMA,YAAU,KAAK,UAAU,IAAI,IAAI;AACvC,OAAIA,cAAY,OACZ,MAAK,cAAcA,UAAQ;;;;;EAMnC,SAAS;AACL,QAAK,cAAc;;;;;EAKvB,cAAc,WAAS;AACnB,QAAK,OAAO,KAAKA,UAAQ;;;;;EAK7B,eAAe;AACX,QAAK,OAAO,KAAK;;;AAGzB,SAAQ,2BAA2B;;;;;;AChGnC,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,kCAAkC,KAAK;CAC/C,MAAMC;CACN,MAAM,gBAAgB,QAAQ,cAAc;CAC5C,MAAM;CACN,IAAM,kCAAN,cAA8C,mCAAmC,iCAAiC;EAC9G,cAAc;AACV,UAAO;AACP,QAAK,qBAAqB,IAAI,cAAc,mBAAmB;;EAEnE,SAAS;GACL,IAAI;AACJ,WAAQ,KAAK,KAAK,mBAAmB,UAAU,MAAM,QAAQ,OAAO,KAAK,IAAI,KAAKA,SAAM;;EAE5F,KAAK,WAAS,IAAI,SAAS,GAAG,MAAM;GAChC,MAAM,KAAK,WAAW,OAAO,KAAK,GAAG,KAAK,QAAQ;AAClD,UAAO,KAAK,mBAAmB,IAAIC,WAAS,IAAI,GAAG,KAAK;;EAE5D,SAAS;AACL,UAAO;;EAEX,UAAU;AACN,QAAK,mBAAmB,SAAS;AACjC,UAAO;;;AAGf,SAAQ,kCAAkC;;;;;;AC1B1C,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,kCAAkC,QAAQ,2BAA2B,KAAK;CAClF,IAAI;AACJ,QAAO,eAAe,SAAS,4BAA4B;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,2BAA2B;;EAA6B,CAAC;CAClK,IAAI;AACJ,QAAO,eAAe,SAAS,mCAAmC;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,kCAAkC;;EAAoC,CAAC;;;;;;ACLvL,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,oBAAoB,KAAK;CACjC,MAAMC;;AAEN,SAAQ,qBAAqB,GAAGA,SAAM,kBAAkB,0CAA0C;;;;;;ACJlG,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,aAAa,QAAQ,sBAAsB,QAAQ,eAAe,QAAQ,eAAe,QAAQ,gBAAgB,QAAQ,oBAAoB,KAAK;;AAE1J,SAAQ,oBAAoB;AAE5B,SAAQ,gBAAgB;AACxB,SAAQ,eAAe;AACvB,SAAQ,eAAe;AACvB,SAAQ,sBAAsB;AAC9B,SAAQ,aAAa;;;;;;ACTrB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,oBAAoB,KAAK;CACjC,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAMC;CACN,MAAM,uBAAuB,IAAI,IAAI;EAAC;EAAM;EAAQ;EAAQ;EAAK;EAAE,CAAC;CACpE,MAAM,yBAAyB,IAAI,IAAI;EAAC;EAAO;EAAS;EAAS;EAAK;EAAE,CAAC;CACzE,SAAS,oBAAoB,SAAS;AAClC,SAAO,YAAYH,SAAM,WAAW,WAAW,YAAYA,SAAM,WAAW;;CAEhF,SAAS,YAAY,QAAQ;AACzB,SAAO,MAAM,QAAQ,OAAO,GAAG,OAAO,KAAK;;CAE/C,SAAS,eAAe,SAAS,QAAQ,KAAK;AAE1C,SAAO,YADQ,OAAO,IAAI,SAAS,IAAI,CACb;;CAE9B,SAAS,WAAW,SAAS,QAAQ;EACjC,MAAM,UAAU,eAAe,SAAS,QAAQG,cAAY,cAAc;AAC1E,MAAI,OAAO,YAAY,SACnB,QAAO,QAAQ,SAAS,IAAI,IAAI;AAEpC,SAAO;;CAEX,SAAS,UAAU,SAAS,QAAQ;EAChC,MAAM,SAAS,eAAe,SAAS,QAAQA,cAAY,aAAa;AACxE,MAAI,OAAO,WAAW,SAClB,QAAO;AAEX,SAAO;;CAEX,SAAS,SAAS,SAAS,QAAQ;AAE/B,SADc,eAAe,SAAS,QAAQA,cAAY,WAAW,KACpD,MAAM,MAAM;;CAEjC,SAAS,cAAc,SAAS,QAAQ;EACpC,MAAM,aAAa,eAAe,SAAS,QAAQA,cAAY,aAAa;AAE5E,MADc,SAAS,SAAS,OAAO,KACzB,OAAO,qBAAqB,IAAI,WAAW,CACrD,QAAOH,SAAM,WAAW;AAE5B,MAAI,eAAe,UAAa,uBAAuB,IAAI,WAAW,CAClE,QAAOA,SAAM,WAAW;;;;;;CAShC,IAAM,oBAAN,MAAwB;EACpB,OAAO,WAAS,SAAS,QAAQ;GAC7B,MAAM,cAAcA,SAAM,MAAM,eAAeI,UAAQ;AACvD,OAAI,CAAC,eACD,EAAE,GAAGJ,SAAM,oBAAoB,YAAY,KAC1C,GAAGC,UAAO,qBAAqBG,UAAQ,CACxC;GACJ,MAAM,QAAQA,UAAQ,SAASF,WAAS,kBAAkB;AAC1D,UAAO,IAAI,SAASC,cAAY,eAAe,YAAY,QAAQ;AACnE,UAAO,IAAI,SAASA,cAAY,cAAc,YAAY,OAAO;AAGjE,OAAI,UAAU,IACV,QAAO,IAAI,SAASA,cAAY,YAAY,MAAM;YAE7C,YAAY,eAAe,OAGhC,QAAO,IAAI,SAASA,cAAY,eAAeH,SAAM,WAAW,UAAU,YAAY,gBAAgBA,SAAM,WAAW,UACjH,MACA,IAAI;;EAGlB,QAAQ,WAAS,SAAS,QAAQ;GAC9B,MAAM,UAAU,WAAW,SAAS,OAAO;GAC3C,MAAM,SAAS,UAAU,SAAS,OAAO;GACzC,MAAM,aAAa,cAAc,SAAS,OAAO;GACjD,MAAM,QAAQ,SAAS,SAAS,OAAO;AACvC,QAAK,GAAGA,SAAM,gBAAgB,QAAQ,KACjC,GAAGA,SAAM,eAAe,OAAO,IAChC,oBAAoB,WAAW,EAAE;AACjC,gBAAUI,UAAQ,SAASF,WAAS,mBAAmB,MAAM;AAC7D,WAAOF,SAAM,MAAM,eAAeI,WAAS;KACvC;KACA;KACA,UAAU;KACV;KACH,CAAC;;AAEN,UAAOA;;EAEX,SAAS;AACL,UAAO;IACHD,cAAY;IACZA,cAAY;IACZA,cAAY;IACZA,cAAY;IACZA,cAAY;IACf;;;AAGT,SAAQ,oBAAoB;;;;;;ACvG5B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,qBAAqB,KAAK;CAClC,MAAME;CACN,MAAMC;CACN,MAAM;CACN,MAAMC;CACN,MAAM,mBAAmB;CACzB,MAAM,UAAU,IAAI,OAAO,GAAG;CAC9B,MAAM,iBAAiB,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC;CAC1C,MAAM,cAAc;CACpB,SAAS,oBAAoB,SAAS;AAClC,SAAO,QAAQ,WAAW,KAAK,UAAU,GAAG,UAAU;;CAE1D,SAAS,oBAAoB,eAAe;AACxC,MAAI,iBAAiB,eAAe,IAAI,cAAc,CAClD,QAAOF,SAAM,WAAW;AAE5B,SAAOA,SAAM,WAAW;;;;;;CAM5B,IAAM,qBAAN,MAAyB;EACrB,OAAO,WAAS,SAAS,QAAQ;GAC7B,MAAM,cAAcA,SAAM,MAAM,eAAeG,UAAQ;AACvD,OAAI,CAAC,eACD,EAAE,GAAGH,SAAM,oBAAoB,YAAY,KAC1C,GAAGC,UAAO,qBAAqBE,UAAQ,CACxC;GACJ,MAAM,gBAAgBA,UAAQ,SAAS,SAAS,kBAAkB,IAAI,YAAY,aAAa;GAC/F,MAAM,QAAQ,GAAG,YAAY,QAAQ,GAAG,YAAY,OAAO,GAAG;AAC9D,UAAO,IAAI,SAASD,cAAY,mBAAmB,MAAM;;EAE7D,QAAQ,WAAS,SAAS,QAAQ;GAC9B,MAAM,SAAS,OAAO,IAAI,SAASA,cAAY,kBAAkB;GACjE,MAAM,YAAY,MAAM,QAAQ,OAAO,GAAG,OAAO,KAAK;AACtD,OAAI,OAAO,cAAc,SACrB,QAAOC;GACX,MAAM,QAAQ,UAAU,MAAM,iBAAiB;AAC/C,OAAI,CAAC,MACD,QAAOA;GACX,MAAM,GAAG,kBAAkB,QAAQ,iBAAiB;GACpD,MAAM,UAAU,oBAAoB,iBAAiB;AACrD,OAAI,EAAE,GAAGH,SAAM,gBAAgB,QAAQ,IAAI,EAAE,GAAGA,SAAM,eAAe,OAAO,CACxE,QAAOG;GACX,MAAM,aAAa,oBAAoB,cAAc;AACrD,OAAI,kBAAkB,YAClB,aAAUA,UAAQ,SAAS,SAAS,mBAAmB,cAAc;AAEzE,UAAOH,SAAM,MAAM,eAAeG,WAAS;IACvC;IACA;IACA,UAAU;IACV;IACH,CAAC;;EAEN,SAAS;AACL,UAAO,CAACD,cAAY,kBAAkB;;;AAG9C,SAAQ,qBAAqB;;;;;;AC7D7B,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,mBAAmB,KAAK;AAGhC,EAAC,SAAU,kBAAkB;AACzB,mBAAiB,iBAAiB,mBAAmB,KAAK;AAC1D,mBAAiB,iBAAiB,kBAAkB,KAAK;IACvC,QAAQ,qBAAqB,QAAQ,mBAAmB,EAAE,EAAE;;;;;;ACPlF,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,eAAe,KAAK;CAC5B,MAAME;CACN,MAAM;CACN,MAAM;CACN,MAAMC;CACN,MAAMC;;;;;;;;CAQN,IAAM,eAAN,MAAmB;EACf,YAAY,SAAS,EAAE,EAAE;AACrB,QAAK,qBAAqB,IAAI,oBAAoB,mBAAmB;AACrE,QAAK,sBAAsB,IAAI,qBAAqB,oBAAoB;AACxE,OAAI,OAAO,mBAAmBA,UAAQ,iBAAiB,cAAc;AACjE,SAAK,UAAU,KAAK,mBAAmB;AACvC,SAAK,UAAU,KAAK,mBAAmB,QAAQ;UAE9C;AACD,SAAK,UAAU,KAAK,oBAAoB;AACxC,SAAK,UAAU,KAAK,oBAAoB,QAAQ;;;EAGxD,OAAO,WAAS,SAAS,QAAQ;AAC7B,QAAK,GAAGF,UAAO,qBAAqBG,UAAQ,CACxC;AAEJ,QAAK,QAAQA,WAAS,SAAS,OAAO;;EAE1C,QAAQ,WAAS,SAAS,QAAQ;GAC9B,MAAM,SAAS,OAAO,IAAI,SAASF,cAAY,kBAAkB;AAEjE,OADkB,MAAM,QAAQ,OAAO,GAAG,OAAO,KAAK,OAElD,QAAO,KAAK,oBAAoB,QAAQE,WAAS,SAAS,OAAO;OAGjE,QAAO,KAAK,mBAAmB,QAAQA,WAAS,SAAS,OAAO;;EAGxE,SAAS;AACL,UAAO,KAAK;;;AAGpB,SAAQ,eAAe;;;;;;AC/CvB,QAAO,eAAe,SAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAC7D,SAAQ,mBAAmB,QAAQ,gBAAgB,QAAQ,eAAe,QAAQ,eAAe,QAAQ,sBAAsB,QAAQ,aAAa,QAAQ,oBAAoB,QAAQ,eAAe,KAAK;CAC5M,IAAI;AACJ,QAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,eAAe;;EAAiB,CAAC;CAC9H,IAAI;AACJ,QAAO,eAAe,SAAS,qBAAqB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,YAAY;;EAAsB,CAAC;AACrI,QAAO,eAAe,SAAS,cAAc;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,YAAY;;EAAe,CAAC;AACvH,QAAO,eAAe,SAAS,uBAAuB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,YAAY;;EAAwB,CAAC;AACzI,QAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,YAAY;;EAAiB,CAAC;AAC3H,QAAO,eAAe,SAAS,gBAAgB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,YAAY;;EAAiB,CAAC;AAC3H,QAAO,eAAe,SAAS,iBAAiB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,YAAY;;EAAkB,CAAC;CAC7H,IAAI;AACJ,QAAO,eAAe,SAAS,oBAAoB;EAAE,YAAY;EAAM,KAAK,WAAY;AAAE,UAAO,QAAQ;;EAAqB,CAAC;;;;;;;;;;;ACP/H,SAAgBC,iBAAe,QAAQ;CAEnC,IAAI,MAAM,EAAE;CACZ,IAAI,MAAM,OAAO;AACjB,MAAK,IAAI,KAAK,GAAG,KAAK,KAAK,MAAM;EAC7B,IAAI,MAAM,OAAO;AACjB,MAAI,IACA,KAAI,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,SAAS,IAAI,IAAI;;AAG/D,QAAO;;;;;;;;eChBwC;CAS/CC,+BAA6B;CAC7BC,kBAAgB;CAChBC,6BAA2B;CAC3BC,gBAAc;CACdC,iCAA+B;CAC/BC,gBAAc;CACdC,qBAAmB;CACnBC,qBAAmB;CACnBC,+BAA6B;CAC7BC,8BAA4B;CAC5BC,+BAA6B;CAC7BC,uCAAqC;CACrCC,2BAAyB;CACzBC,iCAA+B;CAC/BC,iDAA+C;CAC/CC,oCAAkC;CAClCC,oCAAkC;CAClCC,2BAAyB;CACzBC,gCAA8B;CAC9BC,8BAA4B;CAC5BC,qBAAmB;CACnBC,uBAAqB;CACrBC,0BAAwB;CACxBC,6BAA2B;CAC3BC,0BAAwB;CACxBC,qBAAmB;CACnBC,uBAAqB;CACrBC,iCAA+B;CAC/BC,gCAA8B;CAC9BC,2BAAyB;CACzBC,2BAAyB;CACzBC,kBAAgB;CAChBC,kBAAgB;CAChBC,uBAAqB;CACrBC,0BAAwB;CACxBC,8BAA4B;CAC5BC,4BAA0B;CAC1BC,sBAAoB;CACpBC,oBAAkB;CAClBC,sBAAoB;CACpBC,sBAAoB;CACpBC,oBAAkB;CAClBC,sBAAoB;CACpBC,sBAAoB;CACpBC,iCAA+B;CAC/BC,oCAAkC;CAClCC,8BAA4B;CAC5BC,6BAA2B;CAC3BC,6BAA2B;CAC3BC,6BAA2B;CAC3BC,qBAAmB;CACnBC,mBAAiB;CACjBC,qBAAmB;CACnBC,sBAAoB;CACpBC,kBAAgB;CAChBC,oBAAkB;CAClBC,sBAAoB;CACpBC,uBAAqB;CACrBC,sBAAoB;CACpBC,oBAAkB;CAClBC,oBAAkB;CAClBC,iBAAe;CACfC,oBAAkB;CAClBC,kBAAgB;CAChBC,oBAAkB;CAClBC,yBAAuB;CACvBC,oBAAkB;CAClBC,wBAAsB;CACtBC,oCAAkC;CAClCC,iDAA+C;CAC/CC,qCAAmC;CACnCC,kDAAgD;CAChDC,yBAAuB;CACvBC,mBAAiB;CACjBC,uBAAqB;CACrBC,iCAA+B;CAC/BC,uCAAqC;CACrCC,6CAA2C;CAC3CC,+CAA6C;CAC7CC,gDAA8C;CAC9CC,qCAAmC;CACnCC,gCAA8B;CAC9BC,2BAAyB;CACzBC,uCAAqC;CACrCC,gCAA8B;CAC9BC,4BAA0B;CAC1BC,8CAA4C;CAC5CC,6CAA2C;CAC3CC,2CAAyC;CACzCC,iCAA+B;CAC/BC,kCAAgC;CAChCC,6BAA2B;CAC3BC,oCAAkC;CAClCC,2BAAyB;CACzBC,mCAAiC;CACjCC,2CAAyC;CACzCC,oDAAkD;CAClDC,yBAAuB;CACvBC,8BAA4B;CAC5BC,mCAAiC;CACjCC,mCAAiC;CACjCC,2BAAyB;CACzBC,mCAAiC;CACjCC,sBAAoB;CACpBC,6BAA2B;CAC3BC,kCAAgC;CAChCC,6CAA2C;CAC3CC,wDAAsD;CACtDC,4BAA0B;CAC1BC,8BAA4B;CAC5BC,uCAAqC;CACrCC,oCAAkC;CAClCC,uCAAqC;CACrCC,kCAAgC;CAChCC,kCAAgC;CAChCC,kCAAgC;CAChCC,mBAAiB;CACjBC,oBAAkB;CAClBC,mBAAiB;CACjBC,6BAA2B;CAC3BC,4BAA0B;CAC1BC,+BAA6B;CAC7BC,+BAA6B;CAC7BC,kCAAgC;CAChCC,qBAAmB;CACnBC,mBAAiB;CACjBC,gCAA8B;CAC9BC,kCAAgC;CAQzBC,oCAAkChI;CAMlCiI,uBAAqBhI;CAMrBiI,kCAAgChI;CAMhCiI,qBAAmBhI;CAMnBiI,sCAAoChI;CAQpCiI,qBAAmBhI;CAQnBiI,0BAAwBhI;CAQxBiI,0BAAwBhI;CAQxBiI,oCAAkChI;CAMlCiI,mCAAiChI;CAMjCiI,oCAAkChI;CAMlCiI,4CAA0ChI;CAQ1CiI,gCAA8BhI;CAM9BiI,sCAAoChI;CAMpCiI,sDAAoDhI;CAMpDiI,yCAAuChI;CAMvCiI,yCAAuChI;CAMvCiI,gCAA8BhI;CAM9BiI,qCAAmChI;CAMnCiI,mCAAiChI;CAQjCiI,0BAAwBhI;CAMxBiI,4BAA0BhI;CAM1BiI,+BAA6BhI;CAM7BiI,kCAAgChI;CAuBhCiI,+BAA6BhI;CAM7BiI,0BAAwBhI;CAMxBiI,4BAA0BhI;CAM1BiI,sCAAoChI;CAMpCiI,qCAAmChI;CAMnCiI,gCAA8BhI;CAM9BiI,gCAA8BhI;CAM9BiI,uBAAqBhI;CAMrBiI,uBAAqBhI;CAMrBiI,4BAA0BhI;CAQ1BiI,+BAA6BhI;CAQ7BiI,mCAAiChI;CAQjCiI,iCAA+BhI;CAM/BiI,2BAAyBhI;CAMzBiI,yBAAuBhI;CAMvBiI,2BAAyBhI;CAMzBiI,2BAAyBhI;CAMzBiI,yBAAuBhI;CAMvBiI,2BAAyBhI;CAMzBiI,2BAAyBhI;CAMzBiI,sCAAoChI;CAMpCiI,yCAAuChI;CAMvCiI,mCAAiChI;CAMjCiI,kCAAgChI;CAMhCiI,kCAAgChI;CAMhCiI,kCAAgChI;CAMhCiI,0BAAwBhI;CAMxBiI,wBAAsBhI;CAMtBiI,0BAAwBhI;CAMxBiI,2BAAyBhI;CAMzBiI,uBAAqBhI;CAMrBiI,yBAAuBhI;CAMvBiI,2BAAyBhI;CAMzBiI,4BAA0BhI;CAM1BiI,2BAAyBhI;CAMzBiI,yBAAuBhI;CAMvBiI,yBAAuBhI;CAQvBiI,sBAAoBhI;CAMpBiI,yBAAuBhI;CAQvBiI,uBAAqBhI;CAMrBiI,yBAAuBhI;CAMvBiI,8BAA4BhI;CAQ5BiI,yBAAuBhI;CAMvBiI,6BAA2BhI;CAM3BiI,yCAAuChI;CAMvCiI,sDAAoDhI;CAMpDiI,0CAAwChI;CAMxCiI,uDAAqDhI;CAQrDiI,8BAA4BhI;CAM5BiI,wBAAsBhI;CAkBtBiI,4BAA0BhI;CAM1BiI,sCAAoChI;CAMpCiI,4CAA0ChI;CAM1CiI,kDAAgDhI;CAMhDiI,oDAAkDhI;CAMlDiI,qDAAmDhI;CAMnDiI,0CAAwChI;CAMxCiI,qCAAmChI;CAMnCiI,gCAA8BhI;CAM9BiI,4CAA0ChI;CAM1CiI,qCAAmChI;CAMnCiI,iCAA+BhI;CAM/BiI,mDAAiDhI;CAMjDiI,kDAAgDhI;CAMhDiI,gDAA8ChI;CAM9CiI,sCAAoChI;CAMpCiI,uCAAqChI;CAMrCiI,kCAAgChI;CAMhCiI,yCAAuChI;CAMvCiI,gCAA8BhI;CAM9BiI,wCAAsChI;CAMtCiI,gDAA8ChI;CAM9CiI,yDAAuDhI;CAMvDiI,8BAA4BhI;CAM5BiI,mCAAiChI;CAMjCiI,wCAAsChI;CAMtCiI,wCAAsChI;CAMtCiI,gCAA8BhI;CAM9BiI,wCAAsChI;CAMtCiI,2BAAyBhI;CAMzBiI,kCAAgChI;CAMhCiI,uCAAqChI;CAMrCiI,kDAAgDhI;CAMhDiI,6DAA2DhI;CAM3DiI,iCAA+BhI;CAM/BiI,mCAAiChI;CAMjCiI,4CAA0ChI;CAQ1CiI,yCAAuChI;CAMvCiI,4CAA0ChI;CAM1CiI,uCAAqChI;CAMrCiI,uCAAqChI;CAMrCiI,uCAAqChI;CAMrCiI,wBAAsBhI;CAQtBiI,yBAAuBhI;CAQvBiI,wBAAsBhI;CAMtBiI,kCAAgChI;CAMhCiI,iCAA+BhI;CAM/BiI,oCAAkChI;CAMlCiI,oCAAkChI;CAMlCiI,uCAAqChI;CAMrCiI,0BAAwBhI;CAQxBiI,wBAAsBhI;CAMtBiI,qCAAmChI;CAMnCiI,uCAAqChI;CAKrCiI,uBACG,iCAAe;EACzBhQ;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACH,CAAC;CAQEkI,iCAA+B;CAC/BC,6BAA2B;CAC3BC,6BAA2B;CAC3BC,8BAA4B;CAC5BC,2BAAyB;CACzBC,kCAAgC;CAChCC,gCAA8B;CAC9BC,4BAA0B;CAC1BC,kCAAgC;CAChCC,8BAA4B;CAC5BC,gCAA8B;CAC9BC,6BAA2B;CAC3BC,8BAA4B;CAC5BC,8BAA4B;CAC5BC,gCAA8B;CAC9BC,2BAAyB;CACzBC,6BAA2B;CAC3BC,8BAA4B;CAC5BC,gCAA8B;CAC9BC,6BAA2B;CAC3BC,iCAA+B;CAC/BC,gCAA8B;CAC9BC,iCAA+B;CAC/BC,iCAA+B;CAC/BC,+BAA6B;CAC7BC,+BAA6B;CAC7BC,iCAA+B;CAC/BC,iCAA+B;CAC/BC,8BAA4B;CAC5BC,8BAA4B;CAC5BC,gCAA8B;CAC9BC,+BAA6B;CAC7BC,0BAAwB;CACxBC,kCAAgC;CAChCC,iCAA+B;CAC/BC,6BAA2B;CAC3BC,+BAA6B;CA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qC;CAKrC,qBACG,+BAAe;EACzB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACH,CAAC;CAQE,+BAA+B;CAC/B,2BAA2B;CAC3B,2BAA2B;CAC3B,4BAA4B;CAC5B,yBAAyB;CACzB,gCAAgC;CAChC,8BAA8B;CAC9B,0BAA0B;CAC1B,gCAAgC;CAChC,4BAA4B;CAC5B,8BAA8B;CAC9B,2BAA2B;CAC3B,4BAA4B;CAC5B,4BAA4B;CAC5B,8BAA8B;CAC9B,yBAAyB;CACzB,2BAA2B;CAC3B,4BAA4B;CAC5B,8BAA8B;CAC9B,2BAA2B;CAC3B,+BAA+B;CAC/B,8BAA8B;CAC9B,+BAA+B;CAC/B,+BAA+B;CAC/B,6BAA6B;CAC7B,6BAA6B;CAC7B,+BAA+B;CAC/B,+BAA+B;CAC/B,4BAA4B;CAC5B,4BAA4B;CAC5B,8BAA8B;CAC9B,6BAA6B;CAC7B,wBAAwB;CACxB,gCAAgC;CAChC,+BAA+B;CAC/B,2BAA2B;CAC3B,6BAA6B;CAC7B,2BAA2B;CAC3B,+BAA+B;CAC/B,6BAA6B;CAC7B,8BA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"}